【发布时间】:2014-11-29 14:24:57
【问题描述】:
我上周开始学习 C#,但现在我遇到了 INSERT sql 语句的问题。我使用了下面的代码,然后我告诉你会发生什么。
private void AddNewUserToDataBase(User user)
{
string commandText = "INSERT INTO User (firstName,lastName,adress,town,favoriteCurrency) " +
"VALUES (@firstName,@lastName,@adress,@town,@favoriteCurrency)";
using (SqlConnection connection = new SqlConnection(global::Laboratoire1.Properties.Settings.Default.Database1ConnectionString))
{
using (SqlCommand command = new SqlCommand())
{
command.Connection = connection;
command.CommandText = commandText;
command.CommandType = CommandType.Text;
// je passe les paramètres ici pour éviter les erreurs au niveau du string commande
command.Parameters.Add(new SqlParameter("@firstName", user.getFirstName())); // autre façon plus générale
command.Parameters.Add(new SqlParameter("@lastName", user.getLastName()));
command.Parameters.Add(new SqlParameter("@adress", user.getAdress()));
command.Parameters.Add(new SqlParameter("@town", user.getTown()));
command.Parameters.Add(new SqlParameter("@favoriteCurrency", user.getFavoriteCurrencyId()));
try
{
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
catch (SqlException ex)
{
MessageBox.Show("Une erreur s'est produite.");
}
}
}
}
我的程序没有崩溃并且出现异常消息框。我试图理解我的错误并更改我的 command.Parameters.Add 的语法,但它仍然不起作用:/。
更改catch块以显示异常而不是吞下它后,它会抛出:
关键字“用户”附近的语法不正确
【问题讨论】:
-
只要有异常,异常就会告诉你错误。但是,您已将其吞下,只是显示了一条通用消息。您应该检查
ex的值,最好不将其吞下,然后将其记录到文件中,在消息框中显示异常.ToString(),或两者兼而有之。 -
好的,谢谢你的建议,我不知道 :)。所以问题是:“关键字'用户'附近的语法不正确。我不明白这一点:我的表用户有所有这些参数和一个自动递增的生成 ID。我使用 varchars 和 int 作为字段 favoriteCurrency
标签: c# sql executenonquery