delphi 中我想用dbGrid显示数据库里面的一张表 MSSQL数据库
procedure GetAllUser;
begin
FrmUser.ADOQuery1.Close;
FrmUser.ADOQuery1.SQL.Clear;
FrmUser.ADOQuery1.SQL.Add('select * from users');
FrmUser.ADOQuery1.Open;
FrmUser.dbgUser.DataSource:=FrmUser.ADOQuery1.DataSource;
end;
我的代码 为什么 执行了之后没有效果呢》?
FrmUser.ADOQuery1.Close;
FrmUser.ADOQuery1.SQL.Clear;
FrmUser.ADOQuery1.SQL.Add('select * from users');
FrmUser.ADOQuery1.Open;
FrmUser.DataSource1.DataSet:=FrmUser.ADOQuery1;
我这样写了 ,,可还是 不行
是不是要设置 dbgrid的列 啊 ?
我提供一个最常规的方法吧
首先,依次添加TADOConnection(con1)、TADOQuery(qry1)、TDataSource(ds1)、TDBGrid(dbgrd1)控件,以一个普通的TButton(btn1)控件作为触发事件,括号内为我自己取的控件名。
设置qry1的Connection属性为con1,ds1的DataSet属性为qry1,设置dbgrd1的DataSource属性为ds1。
在con1中的ConnectionString属性中设置数据库连接属性,在qry1的SQL属性中填写SQL查询语句。
双击btn1控件添加如下事件:
procedure TForm1.btn1Click(Sender: TObject);
begin
con1.Close;
//可以在con1的属性窗口手动设置,也可以代码动态添加连接,如下是SQL Server的常用连接方式
//con1.ConnectionString:='Provider=SQLOLEDB.1(这是SQL Server的连接方式);Password=你的数据库密码;Persist Security Info=True;User ID=用户名(sa);Initial Catalog=默认数据库;Data Source=连接名或者别名';
con1.Open;
qry1.Close;
//同con1,它的SQL属性可以手动设置,也可以动态添加
//qry1.SQL.Add('select * from test');
qry1.Open;
qry1.ExecSQL;
end;
PS:
这只是用DBGrid显示数据库表的一种方式,确实还有很多别的方法。
如果你只是单纯的显示一张表的数据,可以把TADOQuery换成TADOTable控件,ds1的DataSet属性相应的做下改变就行了。
而且你在使用TADOQuery和TADOTable控件时都会看到它们自己也都有ConnectionString属性,你估计会想那直接用这个属性直连数据库多方便,还省去了TADOConnection这个控件,其实不然,我建议你还是用着,不仅仅是一个TADOConnection可以共享给多个控件进行数据库连接,我在自己日常开发的时候发现用TADOTable控件直连数据库表有时会出现一些问题,比如说若你连的那张表有复合索引的时候就会有问题,具体原因比较复杂,谅不详述。
这是我第一次帮别人回复Delphi的问题,纯手打,若有没解释清楚地地方还可以再问我,大家可以一起学习交流,望采纳。