09-连接模式下更新数据
18.3.2 连接模式下更新数据
Command对象的ExecuteNonQuery方法执行对数据的更新操作,并返回受影响的记录行数。
【范例18-6】 使用ExecuteNonQuery方法更新数据源数据。
(1)在Visual Studio 2013中打开Windows应用程序项目“slipmanage”。
(2)为Slipway类添加如下的addSlipway和updateSlipway方法(代码18-6-1.txt)。
01 public int addSlipway(Slipway slipway) // 添加slipway对象
02 {
03 string csql = "insert into Slipway values ( '" + slipway.name + " '," + slipway.volume + ")";
04 SqlCommand cmd = new SqlCommand();
05 using (SqlConnection conn = new SqlConnection(Conn.conn)) {
06 if (conn.State != ConnectionState.Open) conn.Open();
07 cmd.Connection = conn;
08 cmd.CommandText = csql; // cmd属性赋值
09 int val = cmd.ExecuteNonQuery();
10 return val; } //返回执行结果,如返回1,表明添加成功
11 }
12 public int updateSlipway(Slipway slipway) // 更新slipway对象
13 { // 清除原来停靠在slipway上船只的船台号码信息
14 string sqlclear="update Boat set slipwayNo=NULL, validity=NULL where slipwayNo="+ lipway.id;
15 using (SqlConnection conn = new SqlConnection(Conn.conn)) {
16 SqlCommand cmd = new SqlCommand();
17 cmd.Connection = conn; // cmd属性赋值
18 cmd.CommandText = sqlclear;
19 cmd.ExecuteNonQuery(); }
20 foreach (Boat boat in slipway.Boat){ // 更新最新停靠在slipway上船只的船台号码信息
21 string sqladd = "update Boat set slipwayNo = " + slipway.id + ", validity =NULL where stateRegistrationNo = '" + boat.StateRegistrationNo + "'";
22 SqlCommand cmd = new SqlCommand();
23 using (SqlConnection conn = new SqlConnection(Conn.conn)) {
24 cmd.Connection = conn;
25 cmd.CommandText = sqladd; // cmd属性赋值
26 int val = cmd.ExecuteNonQuery(); }
27 if (val == 0) return -1;
28 }
29 return 1;
30 }
【代码详解】
上例Slipway类中的addSlipway方法用来往数据库的船台信息表slipway中添加已有船台信息(通过参数slipway传递)。updateSlipway方法用来更新特定船台(通过参数slipway传递)的停靠船只信息,它先清除该船台原来停靠船只的船台信息,再把该船台最新停靠船只的船台信息依次更新为该船台号码。updateSlipway方法中的下面这条SQL语句:
string sqlclear="update Boat set slipwayNo=NULL, validity=NULL where slipwayNo="+ lipway.id;
用来清除该船台原来停靠船只的船台信息。updateSlipway方法中的下面这条语句:
foreach (Boat boat in slipway.Boat)
用来依次更新该船台最新停靠船只的船台信息,并由程序中的下面这条SQL语句:
string sqladd = "update Boat set slipwayNo = " + slipway.id + ", validity =NULL where stateRegistrationNo = '" + boat.StateRegistrationNo + "'";
实现更新操作。