您的位置:首页 > 博客中心 > 数据库 >

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();     //正式关闭连接
        }
    }

  输出结果如下:

  技术分享

热门排行

今日推荐

热门手游