如何用ADO 访问 ODBC数据源(Access 数据库类型)里面的一个表?

djfu 2006-09-04 11:08:27
我有一个Access 数据库, test.mdb里面有一个简单的数据表 test,只有两列: Id, num,都是数字类型,然后我为这个Access 数据库建立了一个ODBC数据源TestODBC。

但是现在我用ADOTable访问这个ODBC数据源TestODBC里面的test表时老是出错:

Project test.exe raised exception class EVariantTypeCaseError with message
'Could not convert variant of type (Null) into type (String)'. Process
stopped.......

大家试一下,这个问题怎么解决???急。
...全文
475 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
walone007 2006-09-06
  • 打赏
  • 举报
回复
来晚了。
不必建ODBC数据源,直接用ADOConnection,方便又不不容易出错。
具体方法,参考关中刀客的源代码,很详细的。
jaffy 2006-09-06
  • 打赏
  • 举报
回复
直接用ADO控件比较好,不过LZ的问题好象和这个没关系
daydayup234 2006-09-06
  • 打赏
  • 举报
回复
既然Access
放弃ODBC数据源方法

“直接点”

动态连接

一个TADOConnection
一个TADOQuery
void __fastcall TForm1::Button1Click(TObject *Sender)
{
WideString ss;
ss="Provider=Microsoft.Jet.OLEDB.4.0;\n\r"
"Data Source=D:\\SQL\\JB.MDB;"
"Persist Security Info=False";
ADOConnection1->ConnectionString=ss;
ADOConnection1->LoginPrompt=false;
ADOQuery1->Connection=ADOConnection1;


AnsiString sql;
sql="CREATE TABLE bjdata(序号 INTEGER,姓名 CHAR(10))";
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->ExecSQL(); //创建新表TmpTable
ShowMessage("bjdata表创建成功,按OK删除该表");

ADOQuery1->Close();
sql="DROP TABLE TmpTable";
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->ExecSQL(); //删除了表TmpTable
}
controstr 2006-09-06
  • 打赏
  • 举报
回复
Access文件要用ODBC嗎這么麻煩
不如用ADO控件直接連到Access文件
i_love_pc 2006-09-04
  • 打赏
  • 举报
回复
可能不是连接的错误,是你对字段进行操作的时候的错误吧。
djfu 2006-09-04
  • 打赏
  • 举报
回复
表里是有记录的,你们自己可以做一下试验。
flowercity 2006-09-04
  • 打赏
  • 举报
回复
表里面没记录
djfu 2006-09-04
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4992/4992514.xml?temp=.6489527
----------------------

那个问题估计是由于ADOTable控件内部的bug引起,即使你用try{}catch(...)
也是捕捉不到那个异常的,
解决方法就是用ADOQuery替代ADOTable,其实ADOTable无非就是ADOQuery的一个特例吧,因为ADOTable就相当于ADOQuery的sql语句为: select * from Tbl1.


ADOConnection1->Connected = false;
ADOConnection1->ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=TESTDB";
ADOConnection1->Connected = true;
ADOQuery1->Close();
ADOQuery1->Connection = ADOConnection1;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from " + Edit1->Text);
ADOQuery1->Open();
netliuming 2006-09-04
  • 打赏
  • 举报
回复
Could not convert variant of type (Null) into type (String),
有个参数类型为variant的变量是空值,不能转换为String类型的。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧