m_Sql= "select * from GDK_Table";
g_Query->Close();
g_Query->SQL->Clear();
g_Query->SQL->Add(m_Sql) ;
m_rows =g_Query->ExecSQL();
程序执行时候总是说 "access violation at address 4032bb96 in module dbrtl60.bpl"
这是怎么回事啊?
m_rows =g_Query->ExecSQL();
改为 m_rows =g_Query->Open
Select 有返回结果,所以用 Open
insert delete,update等没有返回值的用ExecSQL
没有返回结果的用ExecSQL
建议你去其它有装BCB的机上运行一下你的那个程序
我有个同学也是这样的问题,一样的错误,他把他的程序拿到其它机上运行,一样的代码,结果运行顺畅.
这个可能是BCB在安装时的错误.
虽然安装可以,不过可能会有些功能无法实现.
m_rows =g_Query->ExecSQL();
改为 g_Query->Open
m_rows=g_Query->RecordCount;
你把m_rows定义为什么类型了?
g_Query->RecordCount返回的是一个记录集!
同意小不懂的意见。 query->open(),返回的是一个数据集,怎么可以付给一个 int呢? 如果你要取得一个数据表的行数,可以如下:
AnsiString sqlstr;
sqlstr="select count(*) from tablename";
ADOQuery->sql->add(sqlstr);
ADOQuery->open;
m_rows= ADOQuery->Fields->Fields[0]->Value;
没有返回结果的用ExecSQL,建議用open
另外建議重裝bcb6
我一直都用ExecSQL,不论是select,insert等
你看是不是其它的什么问题
应该是CB5的问题,用CB6重新编译应该没有什么问题!