如何獲取SQL中Print語句輸出內容


  SqlConnection cn = new SqlConnection("server=my\\my2005;database=rdwhdata2005;user id=zjh;password=321321");
        List<string> lis = new List<string>();
        void info(object o, SqlInfoMessageEventArgs ar)
        {
            foreach (SqlError r in ar.Errors)
            {
                //MessageBox.Show(r.Message);
                lis.Add("從 SQL Server 中獲取一個數值錯誤代碼,它表示錯誤、警告或“未找到數據”消息。"+r.State.ToString());
                lis.Add("獲取生成錯誤的提供程序的名稱。"+r.Source.ToString());
                lis.Add("獲取生成錯誤的 SQL Server 實例的名稱。"+r.Server.ToString());
                lis.Add("獲取生成錯誤的存儲過程或遠程過程調用 (RPC) 的名稱。"+r.Procedure.ToString());
                lis.Add("獲取一個標識錯誤類型的數字。"+r.Number.ToString());
                lis.Add("獲取對錯誤進行描述的文本。"+r.Message.ToString());
                lis.Add("從包含錯誤的 Transact-SQL 批命令或存儲過程中獲取行號。"+r.LineNumber.ToString());
                lis.Add("獲取從 SQL Server 返回的錯誤的嚴重程度。"+r.Class.ToString());
            }
        }
        /* 測試存儲過程中的Print打出的錯誤信息
            create proc testproc
            as
            print 'this is test textproc';     
         */

        private void button1_Click(object sender, EventArgs e)
        {
            cn.InfoMessage += new SqlInfoMessageEventHandler(info);
            cn.Open();
            SqlCommand cmd = new SqlCommand("testproc", cn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.ExecuteNonQuery();
            cn.Close();
            //執行完后就有 MessageBox.Show(r.Message);的結果
            for (int i = 0; i < lis.Count; i++)
            {
                listBox1.Items.Add(lis[i].ToString());
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM