? Table_name是相关的表名称。
? column_list是列的集合,如果有多个列可用都好隔开。 ? VALUES是相应的列的值。
如果需要向表mytables插入数据,而mytables里包括自动增长的主键id和title两列,则INSERT语句可以编写为如下代码。
INSERT INTO mytables VALUES (?新的新闻标题?)
上述代码向表mytables中插入了一条新记录,并将title赋值为“新的新闻标题”。值得注意的是,在这条语句中,并没有编写列的集合,是因为当不编写column_list时,则默认为每一个列插入数值。
注意:自动增长的主键类型的字段,无需向数据中插入数值,因为SQL Server会自动为该列赋值。 如果需要当插入数据时,需要指定插入相应的列的值,则可以将SQL语句代码编写如下。
INSERT INTO mytables (title) VALUES (?新的新闻标题?)
上述代码指定了列title,并对应了相应的值。若在表中存在多个列,列的顺序和列相应的值的顺序必须匹配。例如有3列并分别为number1,string2,datetime3,当需要向其中插入数据时,则可以编写以下SQL语句。
INSERT INTO examtable (number1,string2,datetime3) VALUES (1,?this is a string?,?2008/9/18?)
上述代码编写了INSERT语句以便数据的插入,同样在插入语句中如果需要插入所有的列,可以简化INSERT语句以便快速进行数据插入,示例代码如下所示。
INSERT INTO examtable VALUES (1,?this is a string?,?2008/9/18?)
值得注意的是,无论按照何种方法编写SQL语句,值和列都应该相互匹配。
9.2.2 使用Command对象更新记录
编写了SQL语句后,必须执行SQL语句,在ADO.NET中,执行SQL语句有很多方法,其中推荐使用Command命令的ExecuteNonQuery()。执行SQL语句的命令的必要步骤如下所示。
? 打开数据连接。
? 创建一个新的Command对象。 ? 定义一个SQL命令。 ? 执行SQL命令。 ? 关闭连接。
从上面的步骤可以发现执行SQL语句是非常容易的,首先必须要打开到数据库的连接,示例代码如下所示。
string str = \ SqlConnection con = new SqlConnection(str); //创建连接对象 con.Open(); //打开连接
其中,str是数据连接字串,用来初始化Connection对象,说明如何连接数据库,当数据库连接完毕后,可以使用Open方法打开数据连接。完成数据库连接后,需创建一个新的Command对象,示例代码如下所示。
SqlCommand cmd = new SqlCommand(\插入一条新数据')\
Command对象的构造函数的参数有两个,一个是需要执行的SQL语句,令一个是数据库连接对象。创建Command对象后,就可以执行SQL命令,执行后完成并关闭数据连接,示例代码如下所示。
cmd.ExecuteNonQuery(); con.Close();
//执行SQL命令 //关闭连接
上述代码使用了ExecuteNonQuery()方法执行了SELECT语句的操作,当执行完毕后就需要对现有
248
的连接进行关闭,以释放系统资源。
9.2.3 使用DataSet数据集插入记录
使用INSERT语句能够完成数据插入,使用DataSet对象也可以完成数据插入。为了将数据库的数据填充到DataSet中,则必须先使用DataAdapter对象的方法实现填充,当数据填充完成后,开发人员可以将记录添加到DataSet对象中,然后使用Update方法将记录插入数据库中。使用DataSet更新记录的步骤如下所示:
? 创建一个Connection对象。 ? 创建一个DataAdapter对象。 ? 初始化适配器。
? 使用数据适配器的Fill方法执行SELECT命令,并填充DataSet。 ? 使用DataTable对象提供的NewRow方法创建新行。 ? 将数据行的字段设置为插入的值。
? 使用DataRowAdd类的Add方法将数据行添加到数据表中。
? 把DataAdapter类的InsertCommand属性设置成需要插入记录的INSERT语句。 ? 使用数据适配器提供的Update方法将新记录插入数据库。
? 使用DataSet类提供的AcceptChanges方法将数据库与内存中的数据保持一致。
当使用DataSet插入记录前,需要创建Connection对象以保证数据库连接,示例代码如下所示。
string str = \ SqlConnection con = new SqlConnection(str); con.Open();
//创建连接字串 //创建连接对象 //打开连接
上述代码创建了一个数据库连接,并打开了数据库连接。完成数据连接后,就需要查询表中的数据并使用DataAdapter对象初始化适配器,示例代码如下所示。
string strsql = \ SqlDataAdapter da = new SqlDataAdapter(strsql, con);
//编写SQL语句 //创建适配器
DataAdapter对象默认构造函数包括两个参数,其中一个参数是需要执行的SQL语句,另一个是Connection对象。在初始化适配器后,需要对适配器的相应的属性做设置,使用SqlCommandBuilder对象可以让系统构造InsertCommand属性,示例代码如下所示。
SqlCommandBuilder build = new SqlCommandBuilder(da); DataSet ds = new DataSet(); da.Fill(ds, \ DataTable tb = ds.Tables[\ tb.PrimaryKey = new DataColumn[] { tb.Columns[\
//构造SQL语句 //创建数据集 //填充数据集 //创建表
//创建表的主键
使用适配器的Fill方法能够填充DataSet数据集,示例代码如下所示。
上述代码创建了一个DataSet数据集对象,被填充数据后,数据集中表的名称被命名为datatable,该命名与数据库中的表的名称并不冲突。填充了DataSet数据对象后,需要使用DataRow对象为DataSet添加数据,示例代码如下所示。
DataRow row = ds.Tables[\ row[\使用DataSet插入新行\ row[\
//创建DataRow //赋值新列
上述代码使用了NewRow方法创建新行返回DataRow对象,当DataRow对象中的相应的元素被赋值后,则需要使用Rows.Add方法增加新行,因为只对DataRow对象赋值,并不能自动的在数据库中增加新行。示例代码如下所示。
249
ds.Tables[\
//添加新行
上述代码将数据更新到DataSet数据集中,为了保持数据集中的数据和数据库的数据的一致性,需使用Update方法,示例代码如下所示。
da.Update(ds, \
//更新数据
当执行了Update方法后,数据库中的数据就会同步DataSet数据集中的数据进行数据更新。
9.3 ASP.NET更新数据库
在应用程序的开发中,常常会需要对数据库中现有的内容进行更新操作。ADO.NET提供了若干不同的更新数据库中记录的方法,如果需要更新数据库中的某列的值或者某几列的值,则需要使用SQL UPDATE命令进行数据库更新。
9.3.1 SQL UPDATE数据更新语句
使用SQL UPDATE语句能够实现数据库中数据的更新,SQL UPDATE语句的一般语法格式如下所示。
UPDATE {table_name} {
SET column1_name=expression1, column2_name=expression2, . .
columnN_name=expressionN
{WHERE condition1 AND|OR condition2} }
上述代码规范了UPDATE语句的编写规范,其中: ? UPDATE是SQL更新关键字。
? table_name是需要更新的表的名称。 ? columnN_name是需要更新的列的名称。 ? expression是列相应的值。 ? WHERE是SQL语句关键字。 ? condition是条件。
如果需要更新表mytable中的某行的数据,则可以编写SQL UPDATE语句进行更新,示例代码如下所示。
UPDATE mytable SET title=?修改后的数据? where id=3
上述代码更新了id为3的数据中的title,并将title字段的值修改为“修改后的数据”。
9.3.2 使用Command对象更新记录
如需要执行UPDATE语句时,同样可以使用Command对象执行语句。Command对象基本上能够执行所有需要进行数据更新的SQL语句。使用Command对象进行数据库操作的步骤基本如下所示。
? 创建数据库连接。
250
? 创建一个Command对象,并指定一个SQL UPDATE(或存储过程)。
? 使用Command对象的ExecuteNonQuery()方法执行UPDATE(或存储过程)。 ? 关闭数据库连接。
当需要执行UPDATE语句时,首先必须要打开到数据库的连接,打开连接后,使用Command对象执行SQL语句,示例代码如下所示。
string str = \ SqlConnection con = new SqlConnection(str); //创建连接对象 con.Open(); //打开连接
其中,str同样是数据连接字串,用来初始化Connection对象,说明如何连接数据库,当数据库连接完毕后,可以使用Open方法打开数据连接。完成数据库连接后,需创建一个新的Command对象进行数据更新,示例代码如下所示。
SqlCommand cmd = new SqlCommand(\?修改后的数据? where id=3\ //创建Command对象
Command对象的构造函数的参数有两个,一个是需要执行的SQL语句,令一个是数据库连接对象。创建Command对象后,就可以执行SQL命令,执行后完成并关闭数据连接,示例代码如下所示。
cmd.ExecuteNonQuery(); con.Close();
//执行SQL命令 //关闭连接
上述代码使用了ExecuteNonQuery()方法进行SQL UPDATE语句的执行,从而能够更新数据库中的相应数据。
9.3.3 使用DataSet数据集更新记录
ADO.NET的DataSet对象提供了更好的编程实现数据库的更新功能。因为DataSet对象与数据库始终不是连接的,开发人员可以向脱离数据库的DataSet对象中增加列、删除列或更新列。当完成了修改后,则可以通过将DataSet对象连接到DataAdapter对象来将记录传输给数据库。DataSet更新记录的步骤如下所示。
? 创建一个Connection对象。 ? 创建一个DataAdapter对象。 ? 初始化适配器。
? 使用数据适配器的Fill方法执行SELECT命令,并填充DataSet。 ? 执行SqlCommandBuilder方法生成UpdataCommand方法。 ? 创建DataTable对象并指定相应的DataSet中的表。 ? 创建DataRow对象并查找需要修改的相应行。 ? 更改DataRow对象中的列的值。 ? 使用Update方法进行数据更新。
在更新记录前,首先需要查询出相应的数据,查询相应的数据后才能够填充DataSet,示例代码如下所示。
string str = \ SqlConnection con = new SqlConnection(str); con.Open(); string strsql = \ SqlDataAdapter da = new SqlDataAdapter(strsql, con); DataSet ds = new DataSet(); da.Fill(ds, \
//创建连接字串
//创建连接对象 //打开连接 //执行查询
//使用DataAdapter //使用DataSet
//使用Fill方法填充DataSet
251
上述代码将查询出来的数据集保存在表为datatable的DataSet记录集中,DataSet记录集的表的名称可以按照开发人员的喜好来编写,从而区分内存中表的数据和真实的数据库的区别。当需要处理数据时,只需要处理相应名称的表即可,示例代码如下所示。
DataTable tb = ds.Tables[\
当需要执行更新时,可直接使用DataSet对象进行更新操作来修改其中的一行或多行记录,示例代码如下所示。
DataTable tb = ds.Tables[\
tb.PrimaryKey = new DataColumn[] { tb.Columns[\ DataRow row = tb.Rows.Find(1); row[\新标题\
当需要更新某个记录时,必须在更新之前查找到该行的记录。可以使用Rows.Find方法查找到相应的行,然后将数据集表中的该行的列值进行更新。使用DataAdapter的Update方法可以更新DataSet数据集,并保持数据集和数据库中数据的一致性,示例代码如下所示。
da.Update(ds, \
在执行以上代码,可能会抛出异常“当传递具有已修改行的DataRow集合时,更新要求有效的UpdateCommand”。这是因为在更新时,并没有为DataAdapter对象配置UpdateCommand方法,可以通过SqlCommandBuilder对象配置UpdateCommand方法,示例代码如下所示。
SqlCommandBuilder build = new SqlCommandBuilder(da);
上述代码为DataAdapter对象自动配置了UpdateCommand,DeleteCommand等方法,当执行更新时,无需手动配置UpdateCommand方法。
9.4 ASP.NET删除数据
当数据库中的数据过多,或需要对数据库进行数据优化时,则可能需要对数据库中的数据进行删除,例如用户的操作,长期不上线的用户资料,都可以删除。ADO.NET提供多种数据库的删除方法,并且同样支持DataSet方法删除数据库。
9.4.1 SQL DELETE数据删除语句
使用SQL DELETE语句能够实现数据库中数据的更新,SQL DELETE语句的一般语法格式如下所示。
DELETE [FROM] {table_name}
[WHERE condition1 AND|OR condition2]
上述代码规范了DELETE语句的编写规范,其中: ? DELETE是SQL删除关键字。 ? FORM是一个可以选择的关键字。 ? table_name是表的名称。
? WHERE是一个SQL关键字。
? conditionN是执行DELETE命令中需要达成的若干条件。
SQL DELETE相对来说比较简单,当需要对某个表中的数据进行删除时,可以使用DELETE语句来执行删除操作,在编写DELETE语句时,需要指定表,并且指定相应的条件,示例代码如下所示。
252