使用DataSet数据集插入记录
使用INSERT语句能够完成数据插入,使用DataSet对象也可以完成数据插入。为了将数据库的数据填充到DataSet中,则必须先使用DataAdapter对象的方法实现填充,当数据填充完成后,开发人员可以将记录添加到DataSet对象中,然后使用Update方法将记录插入数据库中。使用DataSet更新记录的步骤如下所示:
q 创建一个Connection对象。
q 创建一个DataAdapter对象。
q 初始化适配器。
q 使用数据适配器的Fill方法执行SELECT命令,并填充DataSet。
q 使用DataTable对象提供的NewRow方法创建新行。
q 将数据行的字段设置为插入的值。
q 使用DataRowAdd类的Add方法将数据行添加到数据表中。
q 把DataAdapter类的InsertCommand属性设置成需要插入记录的INSERT语句。
q 使用数据适配器提供的Update方法将新记录插入数据库。
q 使用DataSet类提供的AcceptChanges方法将数据库与内存中的数据保持一致。
当使用DataSet插入记录前,需要创建Connection对象以保证数据库连接,示例代码如下所示。
string str = "server='(local)';database='mytable';uid='sa';pwd='sa'"; //创建连接字串
SqlConnection con = new SqlConnection(str); //创建连接对象
con.Open(); //打开连接
上述代码创建了一个数据库连接,并打开了数据库连接。完成数据连接后,就需要查询表中的数据并使用DataAdapter对象初始化适配器,示例代码如下所示。
string strsql = "select * from mynews"; //编写SQL语句
SqlDataAdapter da = new SqlDataAdapter(strsql, con); //创建适配器
DataAdapter对象默认构造函数包括两个参数,其中一个参数是需要执行的SQL语句,另一个是Connection对象。在初始化适配器后,需要对适配器的相应的属性做设置,使用SqlCommandBuilder对象可以让系统构造InsertCommand属性,示例代码如下所示。
SqlCommandBuilder build = new SqlCommandBuilder(da); //构造SQL语句
使用适配器的Fill方法能够填充DataSet数据集,示例代码如下所示。
DataSet ds = new DataSet(); //创建数据集
da.Fill(ds, "datatable"); //填充数据集
DataTable tb = ds.Tables["datatable"]; //创建表
tb.PrimaryKey = new DataColumn[] { tb.Columns["id"] }; //创建表的主键
上述代码创建了一个DataSet数据集对象,被填充数据后,数据集中表的名称被命名为datatable,该命名与数据库中的表的名称并不冲突。填充了DataSet数据对象后,需要使用DataRow对象为DataSet添加数据,示例代码如下所示。
DataRow row = ds.Tables["datatable"].NewRow(); //创建DataRow
row["title"] = "使用DataSet插入新行"; //赋值新列
row["id"] = "15";
上述代码使用了NewRow方法创建新行返回DataRow对象,当DataRow对象中的相应的元素被赋值后,则需要使用Rows.Add方法增加新行,因为只对DataRow对象赋值,并不能自动的在数据库中增加新行。示例代码如下所示。
ds.Tables["datatable"].Rows.Add(row); //添加新行
上述代码将数据更新到DataSet数据集中,为了保持数据集中的数据和数据库的数据的一致性,需使用Update方法,示例代码如下所示。
da.Update(ds, "datatable"); //更新数据
当执行了Update方法后,数据库中的数据就会同步DataSet数据集中的数据进行数据更新。
使用DataSet数据集插入记录的更多相关文章
- 使用DataSet数据集删除记录
使用DataSet删除记录和使用DataSet更新记录非常的相似,DataSet删除记录的步骤如下所示. q 创建一个Connection对象. q 创建一个DataAdapter对象. q 初 ...
- C#操作Dataset数据集与SQLite数据库
近日有需要写点C#程序,有用到Dataset数据集和SQLite数据库,由于我从来就不擅长记各种编程语言的语法,所以在查阅一堆资料后,留下以下内容备忘: 一.SQLite操作,直接贴代码,很简 ...
- Delphi数据集与记录
1.1Delphi数据库应用程序的层次结构 Delphi数据库应用程序通过数据存取构件对数据库进行访问,通过可视的数据构件(Data Control)将数据呈现给用户,并与用户进行交互.Delphi数 ...
- MyBatis获取插入记录的自增长字段值
在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名! <insert id=" ...
- 用ORBSLAM2运行TUM Dataset数据集
参照https://github.com/raulmur/ORB_SLAM2/blob/master/README.md 运行 4. Monocular Examples TUM Dataset 数据 ...
- Mybatis获取插入记录的自增长ID(转)
1.在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名,而不是表格的字段名. <ins ...
- MySql避免重复插入记录
今天用python抓取数据入库需要避免重复数据插入,在网上找了一些方法: 方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用 ...
- Java知多少(110)数据库之插入记录
插入数据表记录有3种方案 一.使用Statement对象 实现插入数据表记录的SQL语句的语法是: insert into 表名(字段名1,字段名2,……)value (字段值1,字段值2,……) 例 ...
- mysql防止重复插入记录方法总结
mysql防止重复插入记录方法总结 防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了. ...
随机推荐
- 比file_get_contents稳定的curl_get_contents
相信使用过file_get_contents函数的朋友都知道,当获取的$url访问不了时,会导致页面漫长的等待,甚至还能导致PHP进程占用CPU达100%,因此这个函数就诞生了 分享一个实际在用的函数 ...
- python笔记——第二天
早上6:40起床,睡眼惺忪,学学代码提提神.学完了条件语句. input函数输入值为字符串,处理前转化为int()或float()或其他. if else elif 注意书写格式,否则容易出现synt ...
- vsftpd 访问 权限控制
vsftpd 重启命令 service vsftpd start|restart|stop vsftpd 关于权限控制,有两个文件分别设置,都会起作用 /etc/vsftpd/user_list / ...
- 09 - 删除vtkDataObject中的ShouldIReleaseData() and ReleaseDataFlag 方法 VTK 6.0 迁移
VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.下面列出来的就是其中的一些方法: ShouldIReleaseData() SetReleaseDataF ...
- 真正的手机破解wifi密码,aircrack-ng,reaver,仅限mx2(BCM4330芯片)
仅限mx2(BCM4330芯片),mx可能有戏没测试(BCM4329?),mx3不行. PS:原生安卓应用,非虚拟机 reaver,不知道是啥的看这里http://tieba.baidu.com/p/ ...
- 2015年6月股灾永远载入A股史册
之前很奇怪这次牛市行情的暴涨与暴跌,后来发现成交量是以往不可想象的,而这一切的源头就是融资融券,也就是杠杆. 杠杆的作用是无穷的,就像阿基米德说的那样“给我一个支点,我就能撬起地球”. 杠杆是个放大器 ...
- 转:SetWindowText 的用法
SetWindowText 函数功能:该函数改变指定窗口的标题栏的文本内容(如果窗口有标题栏).如果指定窗口是一个控件,则改变控件的文本内容.然而,SetWindowText函数不改变其他应用程序 ...
- Android 安装和启动另外一个应用
有时候一个应用需要启动另外一个应用来完成操作,比如在某些应用中打开闹钟,相机,日历等等. 启动或安装相应的应用的方法: Step1:判断是否安装目标应用.只要知道目标应用的安装包名就可以通过判断&qu ...
- nodejs 记入
1. vs2015 使用最新的 nodejs refer : http://josharepoint.com/2016/05/04/how-to-configure-visual-studio-201 ...
- XAMPP的Apache服务器无法正常启动解决方案
XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成软件包.介绍什么的,参见百度百科http://baike.baidu.com/link?url=-UE ...