|
(@username, @password)'''';
// 新增参数,用来表示要更新或定位的值
cmdInsert.DataParameters.Add(TDataCommandParameter.Create(''''@username'''', ''''username'''', ftString));
cmdInsert.DataParameters.Add(TDataCommandParameter.Create(''''@password'''', ''''password'''', ftString));
cmdDelete := TDataCommand.Create(nil);
cmdDelete.Connection := conn;
cmdDelete.CommandText := ''''delete from userdb where username=@username'''';
cmdDelete.DataParameters.Add(TDataCommandParameter.Create(''''@username'''', ''''username'''', ftString));
cmdUpdate := TDataCommand.Create(nil);
cmdUpdate.Connection := conn;
cmdUpdate.CommandText := ''''update userdb set password=@password where username=@username'''';
cmdUpdate.DataParameters.Add(TDataCommandParameter.Create(''''@password'''', ''''password'''', ftString));
cmdUpdate.DataParameters.Add(TDataCommandParameter.Create(''''@username'''', ''''username'''', ftString, ptWhereField));
// 定义一个数据适配器,初始化其Command属性
ada := TDataAdapter.Create();
ada.SelectCommand := cmdSelect;
ada.InsertCommand := cmdInsert;
ada.UpdateCommand := cmdUpdate;
ada.DeleteCommand := cmdDelete;
// 定义一个数据集
ds := TDataSetPlus.Create();
conn.Open();
// 用适配器填充记录集,自动新增一个叫’UserTable’的数据表放入记录集中
ada.Fill(ds, ''''UserTable'''');
// 示范更改记录集中的数据
for i := 0 to ds.Tables.ItemByName[''''UserTable''''].Rows.Count-1 do
begin
ds.Tables.ItemByName[''''UserTable''''].Rows[i].Columns.ItemByFieldName[''''password''''].Value := ''''12345'''';
end;
// 用适配器把记录集中的更改更新回数据库
ada.Update(ds.Tables[0]);
conn.Close();
FreeAndNil(conn);
FreeAndNil(ada);
FreeAndNil(ds);
FreeAndNil(cmdSelect);
FreeAndNil(cmdInsert);
FreeAndNil(cmdUpdate);
FreeAndNil(cmdDelete);
end;
大家可以看到,存在很多缺陷,还有隐藏的Bug(我基本上没有做找Bug的动作),我只是把心里想的先试验一下,实现出来,如果有时间,再进行DeBug和完善。
已经想到要完善的:
1、实现CommandBuilder,如果只是对单个物理表做操作,可以根据SelectCommand自动生成InsertCommand、UpdateCommand和DeleteCommand。这是Ado.Net的方式,在很多场合下,可以节省大量的代码和时间。
2、更多的数据绑定。如,可以把指定的数据表中的一列的数据绑定到一个ComboBox。
3、……
整个源码可以在http://www.86soft.com/clsoft/kaneboy/adoplus.zip下载。
有什么想法,请Email联系,kaneboy@163.net,Thanks For 意见和批评。
上一页 [1] [2] [C语言系列]NET 中C#的switch语句的语法 [系统软件]托拽Explore中的文件到VB.net的窗口 [系统软件]Boost库在XP+Visual C++.net中的安装 [常用软件]新配色面板:Paint.Net3.0RC1官方下载 [常用软件]用内建的“Net Meeting”聊天 [VB.NET程序]Henry的VB.NET之旅(三)—共享成员 [VB.NET程序]Henry的VB.NET之旅(二)—构造与析构 [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体 [VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET) [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
|