SqlCommand类
时间:2022-03-14 09:54
4、ExecuteXmlReader() 返回System.XmlReader实例,用于读取SQLServer中的XML字段的值
首先建一张表如下:
其中ArticleInfo字段的数据类型为xml,值为:
<Article> <author age="30">张三</author> <length>12000</length> <price>42</price> </Article>
下面,我们使用ExecuteXmlReader()读取出author的值:
static void Main(string[] args) { string str = "server=.;database=JunTest;uid=sa;pwd=123;"; SqlConnection conn = new SqlConnection(str); //创建连接 SqlCommand cmd = conn.CreateCommand(); //创建命令 cmd.CommandText = "SELECT * FROM Person"; //设置操作语句 conn.Open(); //打开连接 cmd.CommandText = "SELECT Top 1 ArticleInfo FROM Article"; //查询XML字段 using (XmlReader reader = cmd.ExecuteXmlReader()) //由Command实例返回XmlReader的实例 { while (reader.Read()) { if (reader.Name == "author") { Console.WriteLine(reader.ReadInnerXml()); //输出张三 } } } conn.Close(); Console.ReadKey(); }
还有就是以上这些方法的异步版本,本处仅以以下两个方法示例:
5、BeginExecuteNonQuery() 异步版ExecuteNonQuery()
6、EndExecuteNonQuery() 异步版ExecuteNonQuery()
class Program { static void Main(string[] args) { string str = "server=.;database=JunTest;uid=sa;pwd=123;Asynchronous Processing=true"; SqlConnection conn = new SqlConnection(str); //创建连接 SqlCommand cmd = conn.CreateCommand(); //创建命令 cmd.CommandText = "INSERT INTO Person VALUES(11,‘郭嘉‘)"; //设置操作语句 conn.Open(); //打开连接 cmd.BeginExecuteNonQuery(BeginCallback, cmd); //异步执行语句 Console.WriteLine("不管你执没执行完,我继续做我的事!"); Console.ReadKey(); } public static void BeginCallback(IAsyncResult result) { Console.WriteLine("正在执行SQL命令!"); SqlCommand cmd = result.AsyncState as SqlCommand; //获得异步传入的参数 Console.WriteLine("成功执行命令:" + cmd.CommandText); Console.WriteLine("本次执行影响行数为:" + cmd.EndExecuteNonQuery(result)); Console.WriteLine("关闭连接!"); cmd.Connection.Close(); //正式关闭连接 } }
输出结果如下: