SqlConnection cn = new SqlConnection("server=my\\my2005;database=rdwhdata2005;user id=zjh;password=321321"); List<string> lis = new List<string>(); vo ...
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());
}
}