1.ADO原生对象在delphi中是什么类型?是_connection,_recordset,_command这种吗?
2.请看下面的代码。(很短的)
procedure TForm1.Button1Click(Sender: TObject);
var
cn: Variant
rs: Variant;
s1: string;
begin
try
cn := CreateOLEObject('ADODB.Connection');
rs := CreateOLEObject('ADODB.Recordset');
s1 := 'Provider=SQLOLEDB.1;Persist Security Info=True;Initial Catalog=test;Data Source=localhost;Connect Timeout=5;Use Procedure for Prepare=1';
cn.Open(s1,'sa','',-1);
rs.Open('select * from t1',cn,3,1,1);
adoquery1.Recordset := rs;
except
end;
end;
运行出错在“adoquery1.Recordset := rs;”自己也知道类型出错,但这个该如何转换呢?
2.请看下面的代码。(很短的)
procedure TForm1.Button1Click(Sender: TObject);
var
cn: Variant
rs: Variant;
s1: string;
begin
try
cn := CreateOLEObject('ADODB.Connection');
rs := CreateOLEObject('ADODB.Recordset');
s1 := 'Provider=SQLOLEDB.1;Persist Security Info=True;Initial Catalog=test;Data Source=localhost;Connect Timeout=5;Use Procedure for Prepare=1';
cn.Open(s1,'sa','',-1);
rs.Open('select * from t1',cn,3,1,1);
adoquery1.Recordset := rs;
except
end;
end;
运行出错在“adoquery1.Recordset := rs;”自己也知道类型出错,但这个该如何转换呢?
try
if DataModule1.ADOConnection.connected then //操作员登录进行重新连接
DataModule1.ADOConnection.connected := false;
DataModule1.ADOConnection.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security info=false;Data Source ='
+ ServerName + ';Initial Catalog = '
+ DataBase + ';User ID = '
+ UserName + ';Password = ' + Password;
DataModule1.ADOConnection.connected := true;
except
on e: exception do
begin
IResult := -1;
GErrMsg := '连接数据库出错!出错信息:' + e.Message;
writeErrLog(GErrMsg);
exit;
end;
end;
djhai(左左右右) : 你的方法不行,还是会出错。 qzxyd(只会种菜) : 你说的其实我也知道的。但具体方法呢?如何在两者之间转换?不要告诉我一个字段一个字段的赋过去。 还有,我程序里创建的cn,rs是否是原生ADO对象??? 请熟悉的朋友指点哈。
从COM知识可以知道,自动化对象可以有两种调用方式..
一种是"硬"方式的调用,就是指定接口类型的调用.
另一种是"软"方式调用,就是IDispatch接口提供的,可以用Variant方式调用,也就是类似脚本方式调用.不管哪种调用,调用的都是同样的对象.结果当然一样!!