连接类

一、SqlCommand

1、执行带有参数的存储过程

 

代码
 1       Sub  a( ByVal  connectionString  As   String )
 2           Using  connection  As   New  SqlConnection(connectionString)
 3               Using  cmd  =  connection.CreateCommand
 4                  cmd.CommandType  =  CommandType.StoredProcedure
 5                  cmd.CommandText  =   " uspGetCustomerById "
 6 
 7                   Dim  parm  =  cmd.CreateParameter
 8                  parm.ParameterName  =   " @Id "
 9                  parm.Value  =   " AROUT "
10                  cmd.Parameters.Add(parm)
11 
12                   Dim  id  As   String   =  cmd.Parameters( " @Id " ).Value
13               End   Using
14           End   Using
15       End Sub
16 

 

 

  • sqlserver要求参数名与存储过程中定义的参数名相匹配,与参数的创建次序无关。
  • 第7~10行为参数的定义方法。
  • 第12行为访问参数的方法。

2、ExecuteNonQuery方法

 

代码
 1       Sub  b( ByVal  connectionString  As   String )
 2           Using  connection  As   New  SqlConnection(connectionString)
 3               Using  cmd  =  connection.CreateCommand
 4                  cmd.CommandText  =   " UPDATE sales SET qty = qty + 1 WHERE qty > 50 "
 5                  connection.Open()
 6                   Dim  count  As   Integer   =  cmd.ExecuteNonQuery
 7               End   Using
 8           End   Using
 9       End Sub
10 

 

 

  • 第4行为命令文本,为一个修改操作。
  • 第6行返回一个整数,表示操作所影响的行数。

3、 ExecuteScalar方法

当希望查询返回单行单列时,使用ExecuteScalar方法

代码
 1       Sub  c( ByVal  connectionString  As   String )
 2           Using  connection  As   New  SqlConnection(connectionString)
 3               Using  cmd  =  connection.CreateCommand
 4                  cmd.CommandText  =   " SELECT COUNT(*) FROM Sales "
 5                  connection.Open()
 6                   Dim  count  As   Integer   =  cmd.ExecuteScalar
 7                  MessageBox.Show(count.ToString)
 8               End   Using
 9           End   Using
10       End Sub
11 

 

 

4、ExecuteReader方法与SqlDataReader对象

 

代码
 1       Sub  d( ByVal  connectionString  As   String )
 2           Using  connection  As   New  SqlConnection(connectionString)
 3               Using  cmd  =  connection.CreateCommand
 4                  cmd.CommandText  =   " SELECT stor_id, ord_num FROM Sales "
 5                  connection.Open()
 6                   Dim  rdr  =  cmd.ExecuteReader
 7                   While  rdr.Read
 8                      MessageBox.Show(rdr( " stor_id " &   " "   &  rdr( " ord_num " ))
 9                   End   While
10               End   Using
11           End   Using
12       End Sub
13 

 

  • 第6行,只有通过cmd.ExecuteReader方法才能生成rdr
  • 第7~9行,持续遍历结果,直到数据的末尾(Read方法返回False)

 二、SqlDataAdapter

1、Fill方法

如何用Fill方法加载一个DataTable

代码
 1       Sub  e( ByVal  connectionString  As   String )
 2           Using  connection  As   New  SqlConnection(connectionString)
 3               Using  cmd  =  connection.CreateCommand
 4                  cmd.CommandText  =   " SELECT pub_id,pub_name FROM publishers "
 5 
 6                   Dim  pubsDataSet  As   New  DataSet( " Pubs " )
 7                   Dim  da  As   New  SqlDataAdapter(cmd)
 8                  da.Fill(pubsDataSet,  " publishers " )
 9               End   Using
10           End   Using
11       End Sub
12 

 

  • 第7行生成具有SelectCommand的适配器
  • 第8行填充pubsDataSet.Tables("publishers")表

2、Update方法

 

代码
 1       Sub  f( ByVal  connectionString  As   String )
 2           Using  connection  As   New  SqlConnection(connectionString)
 3               Using  cmd  =  connection.CreateCommand
 4                  cmd.CommandText  =   " SELECT * FROM publishers "
 5 
 6                   Dim  pubsDataSet  As   New  DataSet( " Pubs " )
 7                   Dim  da  As   New  SqlDataAdapter(cmd)
 8                   Dim  bldr  As   New  SqlCommandBuilder(da)
 9                  da.Fill(pubsDataSet,  " publishers " )
10                   ' modify data here
11                  pubsDataSet.Tables( " publishers " ).Rows( 0 )( " pub_name " =   " Hello "
12                  pubsDataSet.Tables( " publishers " ).Rows.Add( " 9911 " " tailspin Toys " " Paris " Nothing " France " )
13                  da.UpdateBatchSize  =   0
14                  da.Update(pubsDataSet,  " publishers " )
15               End   Using
16           End   Using
17          MessageBox.Show( " Update Complete " )
18       End Sub
19 

 

 

  • 第7、8行用来生成具有4个命令的适配器
  • 第13行使修改结果批量保存到数据库,以提高性能。
  • 第14行用来将第11、12行修改的数据传送到数据库中。

 

 

你可能感兴趣的:(连接)