2010-07-08 17 views
0

這是我如何使用SQL Server中使用的DataAdapter和DataSet中的VB更新表:如何在運行DataAdapter/DataSet SQL查詢時檢查錯誤?

我知道填充方法沒有意義的INSERT語句的情況下,但我是新來這個技術並且上述語句完成了這項工作並更新了表格無問題。我的問題是這樣的:如果有錯誤(比如重複鍵錯誤),我怎麼會在我的應用程序中知道這一點?我應該把上面的代碼放在try/catch塊中嗎?

另外,如果使用不使用Fill方法的DataAdapter/DataSet組合運行INSERT語句的「正確」方法,請指出。

非常感謝,

託德

+0

一開始,請張貼代碼:) 時或者使用標籤,選中代碼,然後按Ctrl + K :) – 2010-07-08 18:12:19

+0

@Ranhiru,感謝我展示它是如何做,只是做了一個編輯和更正了格式。 – Sabuncu 2010-07-08 20:40:51

回答

2

對於更新語句,你應該使用SqlCommand對象。

SqlCommand cmd = new SqlCommand("INSERT INTO my_table (name, lastname) VALUES ('John', 'Doe')", My.Settings.ConnectionString); 

cmd.ExectureNonQuery(); 

但是還是建議您使用參數化的SQL查詢,萬一你是從用戶獲取數據以減少SQL注入攻擊的機會:)

SqlCommand cmd = new SqlCommand("INSERT INTO my_table (name, lastname) VALUES (@FirstName, @LastName)", My.Settings.ConnectionString); 

cmd.Parameters.Add("FirstName", SqlDbType.NVarChar); 
cmd.Parameters.Add("LastName", SqlDbType.NVarChar); 

cmd.Parameters[0].Value = txtFirstName.Text; 
cmd.Parameters[1].Value = txtLastName.Text; 

cmd.ExecuteNonQuery(); 

回答您的其他問題:

是的。如果存在主鍵違例,則會拋出SQLException。您可以使用try-catch塊捕獲它並顯示消息或執行任何適當的操作。

try 
{ 
    cmd.ExecuteNonQuery(); 
} 
catch (Exception ex) 
{  
    MessageBox.Show("Error! " + ex.Message); 
} 
+0

謝謝你,我試過你的代碼,它工作正常。我也收回了插入的行數。非常感謝,你知道你的東西! – Sabuncu 2010-07-09 16:31:05

+0

@Toddintr:我的榮幸:) – 2010-07-09 17:43:13