您的位置:首页 > 数据库

string strSQL = "Select * From Employees;Select * from Customers";执行两次查询

2013-11-21 18:04 351 查看
SqlCommand对象的字符串SQL命令可以做多个,
以查询为例,用到SqlDataReader的一些方法,如ExecuteReader(),Read()(一条命令内的移动至下一记录),NextResult()(移动到下一个命令并执行)。


1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 using System.Data;
6 using System.Data.SqlClient;
7 using System.Data.Common;
8
9 namespace AutoLotDataReader
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             Console.WriteLine("***** Fun with Data Readers *****\n");
16
17             #region Connection string builder logic
18             // Create a connection string via the builder object.
19             // SqlConnectionStringBuilder,这样就不用写连接字符串了
20             SqlConnectionStringBuilder cnStrBuilder =
21               new SqlConnectionStringBuilder();
22             //cnStrBuilder.InitialCatalog = "AutoLot";
23             //cnStrBuilder.DataSource = @"(local)\SQLEXPRESS";
24             cnStrBuilder.InitialCatalog="Northwind";
25             cnStrBuilder.DataSource = @"NLH774";
26             cnStrBuilder.ConnectTimeout = 30;
27             cnStrBuilder.IntegratedSecurity = true;
28
29             SqlConnection cn = new SqlConnection();
30             cn.ConnectionString = cnStrBuilder.ConnectionString;
31             cn.Open();
32             ShowConnectionStatus(cn);
33             #endregion
34
35             // Create a SQL command object w/ 2 select statements.
36             //执行两句SQL语句
37             //string strSQL = "Select * From Inventory;Select * from Customers";
38             string strSQL = "Select * From Employees;Select * from Customers";
39             SqlCommand myCommand = new SqlCommand(strSQL, cn);
40
41             // Obtain a data reader a la ExecuteReader().
42             SqlDataReader myDataReader;
43             myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
44
45             #region Loop over each table.
46             do
47             {
48                 //遍历一个查询中的记录
49                 while (myDataReader.Read())
50                 {
51                     //遍历按行输出一个记录的信息,格式列名=列值
52                     Console.WriteLine("***** Record *****");
53                     for (int i = 0; i < myDataReader.FieldCount; i++)
54                     {
55                         Console.WriteLine("{0} = {1}",
56                           myDataReader.GetName(i),
57                           myDataReader.GetValue(i).ToString().Trim());
58                     }
59                     Console.WriteLine();
60                 }
61
62                 Console.WriteLine("**********************************");
63             } while (myDataReader.NextResult());    //执行下一个结果集查询(Select * from Customers)
64             #endregion
65
66             // Because we specified CommandBehavior.CloseConnection, we
67             // don't need to explicitly call Close() on the connection.
68             myDataReader.Close();
69             Console.ReadLine();
70         }
71
72         #region Helper method
73         static void ShowConnectionStatus(DbConnection cn)
74         {
75             // Show various stats about current connection object.
76             Console.WriteLine("***** Info about your connection *****");
77             Console.WriteLine("Database location: {0}", cn.DataSource);
78             Console.WriteLine("Database name: {0}", cn.Database);
79             Console.WriteLine("Timeout: {0}", cn.ConnectionTimeout);
80             Console.WriteLine("Connection state: {0}\n", cn.State.ToString());
81         }
82         #endregion
83     }
84 }


虽然可以这样,但我觉得从软件编码规范、清晰可读性上说,最好还是不要这么操作。

最好应该分开执行不同的命令,大不了多声明几个字符串命令而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐