【问题标题】:C# can't insert into Data SourceC# 无法插入数据源
【发布时间】:2017-03-29 08:52:14
【问题描述】:

这是我的代码:

try
{
    SqlCommand cmd2 = new SqlCommand(@"INSERT INTO Clienti (parola,nume,prenume,adresa,email,kcal_zilnice) VALUES (@Parola,@Nume,@Prenume,@Adresa,@Email,2000)", conn);
    cmd2.Prepare();
    cmd2.Parameters.AddWithValue("@Parola", passBox.Text);
    cmd2.Parameters.Add("@Nume", SqlDbType.VarChar, 50).Value = nameBox.Text;
    cmd2.Parameters.Add("@Prenume", SqlDbType.VarChar, 50).Value = pnameBox.Text;
    cmd2.Parameters.Add("@Adresa", SqlDbType.VarChar, 100).Value = adressBox.Text;
    cmd2.Parameters.Add("@Email", SqlDbType.VarChar, 100).Value = emailBox.Text;
    cmd2.ExecuteNonQuery();
}
catch (SqlException exception)
{
    MessageBox.Show("Failed! " + exception.Message);
}
MessageBox.Show("User Created!");

我不知道我在这里做错了什么。我什至试图用'abc'替换@Parola,但它不起作用。我没有收到任何错误消息。每次我得到“用户创建”,但是当我查看数据库时,我得到所有字段 NULL(没有创建记录)。

【问题讨论】:

  • 什么异常?
  • 如果将其从 SqlException 更改为 just exception 会发生什么......也许还有其他问题。
  • 阅读 MSDN 文档(我之前没见过 Prepare()),我认为 .Prepare() 应该在参数之后和 .ExecuteNonQuery() 之前调用。

标签: c# datasource


【解决方案1】:

所以,对于任何有同样问题的人 Prepare() 解决了它。 对参数使用 Add() 并指定 SqlDbType。 Prepare() 不适用于 AddWithValue()。 最后执行 Prepare(),然后执行 ExecuteNonQuery()。

【讨论】:

  • 啊,有趣。很高兴知道你把它整理好了。 :)
猜你喜欢
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
相关资源
最近更新 更多