2010-07-08 84 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