(急)delphi6怎么链Access2000的数据库? delphi6怎么链Access2000的数据库?,在delphi6中只能联sybase的数据库,看书上说要配置BDE Administrator才能联其他的数据库,而且,在delphi6中,只能联*.dbf的表,Access的表也不行,我该怎么办?请大侠详细介绍一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用ADO,看我的例子:/创建access数据库(d:\dd.mdb)uses comobjconst CCreateMDB='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s';procedure TForm1.Button1Click(Sender: TObject);var cat:Variant; fname:string;begin fname:='d:\dd.mdb'; cat:=CreateOleObject('ADOX.Catalog'); cat.Create(Format(CCreateMDB,[fname])); cat:=Unassigned;end;//连接数据库操作uses adodb;const connectstringA ='Provider=MSDataShape.1;Persist Security Info=True;Data Source='; connectstringB =';Data Provider=Microsoft.Jet.OLEDB.4.0';var Adoconnecyion:TadoConnection; T2:TADOquery;beginADOConnection:=TADOConnection.create(Application); ADOConnection.connectionstring:=connectstringA + 'd:\test.mdb'+ connectstringB; ADOConnection.LoginPrompt:=False;T2.connection:=AdoConnection; SqlClause:='select * from tablename'; T2.SQL.Clear; T2.SQL.Add(SqlClause); T2.Open;赠送一些例子://对表中ole对象字段附值 adotable1.Edit ; tblobfield(adotable1.FieldByName('s6')).loadfromfile('c:\test.txt');//或者是loadfromstream() ; adotable1.Post ; //取出表中ole对象字段的值 adoquery1.SQL.Clear ; adoquery1.SQL.Add('select * from bb'); adoquery1.Open ; tblobfield(adoquery1.FieldByName('s6')).savetofile('c:\test1.txt') ; richedit1.Lines.Clear ; richedit1.Lines.LoadFromFile('c:\test1.txt') ; richedit1.Text := tblobfield(adoquery1.FieldByName('s6')).value ; //用动态sql语句插入有ole对象字段的记录 sqlstring := 'insert into bb(s1,s2,s6) values("12","45",:bb)' ; adoquery1.SQL.Add(sqlstring) ; adoquery1.Parameters.ParamByName('bb').loadfromfile('c:\test1.txt',ftblob) ; adoquery1.execsql; 说明:用ADO连接数据库时对parambyname()函数赋值时,后面只能跟VALUE不能跟asstring,asinteger等, 即parambyname('bb').value正确,而parambyname('bb').asstring|asinteger却不正确。//更改有memo对象字段的的值 sqlstring := 'update bb set s3 = :aa, s4 = :bb where s1=234' ; adoquery1.SQL.Clear ; adoquery1.SQL.add(sqlstring) ; adoquery1.Parameters.ParamByName('aa').value:= 78 ; adoquery1.Parameters.ParamByName('bb').Value := memo1.text;(更改ole对象字段此种方法不行) adoquery1.ExecSQL ; //取出ole对象字段到richedit1空间中 adoquery1.sql.Add('select * from bb'); adoquery1.Open ; richedit1.Text := tblobfield(adoquery1.FieldByName('s6')).value ; //用adotable控件插入数据 adotable1.Edit ; adotable1.FieldByName('s1').asinteger := 100 ; adotable1.FieldByName('s4').asstring := memo1.lines.Text; tblobfield(adotable1.FieldByName('s6')).LoadFromFile('c:\setuplog.txt') ; adotable1.Post ; //用adotable控件取出字段数据 memo1.Text := adotable1.FieldByName('s4').asstring ;//memo字段 richedit1.Text := adotable1.FieldByName('s6').value ; //ole对象字段//查询access库中的表名、表中的字段名 ss:= tstringlist.Create ; adoconnection1.GetTableNames(ss,false); //把表名放入ss字符串列表中 adoconnection1.GetFieldNames('cc',ss) ;//把cc表中的字段名放入ss字符串列表中//修改access表中字段类型、长度 sqlstring :='alter table cc ALTER COLUMN tbindex smallint'; adoquery1.SQL.Clear ; adoquery1.SQL.Add(sqlstring); try adoquery1.ExecSQL; except showmessage( 'create failer'); end;//用adoquery动态创建access表举例 sqlstring := 'create table cc '+ '(tbid integer,' + ' tbindex integer,'+ ' tbname varchar(100),'+ ' tbpreid integer,' + ' rowser integer ,'+ ' cols integer ,'+ ' cellsta image,'+ ' appinfo memo,'+ ' tbre varchar(250),'+ ' primary key (tbid))' ; adoquery1.SQL.Clear ; adoquery1.SQL.Add(sqlstring); try adoquery1.ExecSQL; except showmessage( 'create failer'); end; 用ODBC加BDE,或者直接用ADO吧(JET 4.0)很方便呀 你可以用bde,或则是odbc方法:在控制面版中---odbc数据源--加入Access的驱动程序--添入你的数据源名称和Access数据库 在delphi 的table控件 的数据源就选择你建立的数据源table 的tablename 就可以选择你的表 谢谢各位了,但是每次用delphi连接Access2000表的时候都要一个帐号和密码,这是怎么回事? 设置TDataBase(BDE)或者TADOConnection的LoginPrompt为False delphi如何物理删除DBF数据 delphi 发送数据问题 测试代理问题 高手帮我看看这段语句错在哪里啊? 如何拦截中文输入 急!!!!怎样对Delphi中的Tchart的X,Y坐标单独放大缩小? 求一API函数的声明。 有关窗体设计器的问题 delphi写dll,dll里能有窗体吗?如果这个dll给pb调用 能不能把网上邻居加入到drivecombobox的列表中??? 怎样将对象的内存映射块去出来存到数据库中 !!!想实现类似IE的功能,其它程序可将自己的快捷按钮加进去 100相送!!!!
/创建access数据库(d:\dd.mdb)
uses
comobj
const
CCreateMDB='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s';
procedure TForm1.Button1Click(Sender: TObject);
var
cat:Variant;
fname:string;
begin
fname:='d:\dd.mdb';
cat:=CreateOleObject('ADOX.Catalog');
cat.Create(Format(CCreateMDB,[fname]));
cat:=Unassigned;
end;//连接数据库操作
uses
adodb;
const
connectstringA ='Provider=MSDataShape.1;Persist Security Info=True;Data Source=';
connectstringB =';Data Provider=Microsoft.Jet.OLEDB.4.0';
var
Adoconnecyion:TadoConnection;
T2:TADOquery;
begin
ADOConnection:=TADOConnection.create(Application);
ADOConnection.connectionstring:=connectstringA + 'd:\test.mdb'+ connectstringB;
ADOConnection.LoginPrompt:=False;
T2.connection:=AdoConnection; SqlClause:='select * from tablename';
T2.SQL.Clear;
T2.SQL.Add(SqlClause);
T2.Open;赠送一些例子://对表中ole对象字段附值
adotable1.Edit ;
tblobfield(adotable1.FieldByName('s6')).loadfromfile('c:\test.txt');//或者是loadfromstream() ;
adotable1.Post ;
//取出表中ole对象字段的值
adoquery1.SQL.Clear ;
adoquery1.SQL.Add('select * from bb');
adoquery1.Open ;
tblobfield(adoquery1.FieldByName('s6')).savetofile('c:\test1.txt') ;
richedit1.Lines.Clear ;
richedit1.Lines.LoadFromFile('c:\test1.txt') ;
richedit1.Text := tblobfield(adoquery1.FieldByName('s6')).value ;
//用动态sql语句插入有ole对象字段的记录
sqlstring := 'insert into bb(s1,s2,s6) values("12","45",:bb)' ;
adoquery1.SQL.Add(sqlstring) ;
adoquery1.Parameters.ParamByName('bb').loadfromfile('c:\test1.txt',ftblob) ;
adoquery1.execsql; 说明:用ADO连接数据库时对parambyname()函数赋值时,后面只能跟VALUE不能跟asstring,asinteger等,
即parambyname('bb').value正确,而parambyname('bb').asstring|asinteger却不正确。//更改有memo对象字段的的值
sqlstring := 'update bb set s3 = :aa, s4 = :bb where s1=234' ;
adoquery1.SQL.Clear ;
adoquery1.SQL.add(sqlstring) ;
adoquery1.Parameters.ParamByName('aa').value:= 78 ;
adoquery1.Parameters.ParamByName('bb').Value := memo1.text;(更改ole对象字段此种方法不行)
adoquery1.ExecSQL ;
//取出ole对象字段到richedit1空间中
adoquery1.sql.Add('select * from bb');
adoquery1.Open ;
richedit1.Text := tblobfield(adoquery1.FieldByName('s6')).value ; //用adotable控件插入数据
adotable1.Edit ;
adotable1.FieldByName('s1').asinteger := 100 ;
adotable1.FieldByName('s4').asstring := memo1.lines.Text;
tblobfield(adotable1.FieldByName('s6')).LoadFromFile('c:\setuplog.txt') ;
adotable1.Post ;
//用adotable控件取出字段数据
memo1.Text := adotable1.FieldByName('s4').asstring ;//memo字段
richedit1.Text := adotable1.FieldByName('s6').value ; //ole对象字段//查询access库中的表名、表中的字段名
ss:= tstringlist.Create ;
adoconnection1.GetTableNames(ss,false); //把表名放入ss字符串列表中
adoconnection1.GetFieldNames('cc',ss) ;//把cc表中的字段名放入ss字符串列表中//修改access表中字段类型、长度
sqlstring :='alter table cc ALTER COLUMN tbindex smallint';
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sqlstring);
try
adoquery1.ExecSQL;
except
showmessage( 'create failer');
end;//用adoquery动态创建access表举例
sqlstring := 'create table cc '+
'(tbid integer,' +
' tbindex integer,'+
' tbname varchar(100),'+
' tbpreid integer,' +
' rowser integer ,'+
' cols integer ,'+
' cellsta image,'+
' appinfo memo,'+
' tbre varchar(250),'+
' primary key (tbid))' ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add(sqlstring);
try
adoquery1.ExecSQL;
except
showmessage( 'create failer');
end;
在delphi 的table控件 的数据源就选择你建立的数据源
table 的tablename 就可以选择你的表