分类: Windows平台
2013-03-11 09:55:53
一TTable连接odbc
注要方法:只要将TTable的DatabaseName设置为odbc的数据源名, TableName设置为数据库(mysql)中的表名就好.
例子: 在我的mysql数据库中, 有一个数据库test, test数据库中有一张表t1.
create table t1
(
id int , ##PK
name char(8),
tall float,
class int, ##PK
primary key(id,class)
);
表中有些记录.
1 安装好mysql的odbc驱动
2 在odbc中配置一个到mysql的连接, DSN名字odbc_mysql_test, 并选择好数据库,输入用户名和密码(我的mysql密码是空的), 测试连接成功.
3 在Delphi程序中加入TTable, TDataSource,TDBGrid各属性设置如下
类型 名称 属性 值
TTable Table1 DatabaseName odbc_mysql_test
TableName t1
TDataSource DataSource1 DataSet Table1
TDBGrid DBGrid1 DataSource DataSource1
TButton Button1
TButton Button2(查找记录)
TEdit Edit1
加入一个按钮Button1, 并加入事件代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Active:=true;
end;
然后运行程序, 按那个Button1按钮,就可以看到运行结果了.
4 查找某一记录,
我的表中有存在这么一记录(id=12,class=2, 现在来根据主键(id,class)查找它的名字.
用Table1.Active:=true打开表后, 用TTable的SetKey和GotoKey来到某一条记录.
(1)调用Setkey设置表为查找模式
(2)输入要查找字段的值
(3)GotoKey查找某一条记录
下面是”查找记录”按钮代码
procedure TForm1.Button2Click(Sender: TObject);
begin
Table1.Active:=true;
Table1.SetKey; //设置为查找状态
Table1.FieldByName('id').AsInteger:=12; //输入要查找主键字段的值,字段是整型所以用AsInteger,如果是字符串型就用Table1.FieldByName().AsString:=’abc’; 其它类推
Table1.FieldByName('class').AsInteger:=2;
if Table1.GotoKey Then //查找记录
Begin
Edit1.Text:=Table1.FieldByName('Name').AsString; //取name字段值
End
else
ShowMessage('要查找的数据没找到');
end;
注意如果用GotoKey的话,这里在SetKey后面要为每个主键字段输入值, 不能多也不能少. 输入字段少的话无法定位到某一记录, 多的话则运行出错