【问题标题】:Unhandled Exception when Inserting Data Into Database将数据插入数据库时​​出现未处理的异常
【发布时间】:2015-04-08 20:39:44
【问题描述】:

当我遇到这个未处理的异常时,我正在尝试将数据插入数据库:

System.Data.dll 中发生了 System.Data.SqlClient.SqlException 类型的异常,但未在用户代码中处理

这是代码

public void addEvent(String username, int id, String date)
{
    String conString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=\"C:\\Users\\SleekBook\\Documents\\Visual Studio 2013\\WebSites\\WebSite2\\App_Data\\Database.mdf\";Integrated Security=True";
    using (SqlConnection con = new SqlConnection(conString))
    {
        String sqlStringS = "INSERT INTO Users (Username, EventID, Date) VALUES (@Username, @EventID, @Date)";

        SqlCommand cmd = new SqlCommand(sqlStringS);
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;
        cmd.Parameters.AddWithValue("@Username", username);
        cmd.Parameters.AddWithValue("@EventID", id);
        cmd.Parameters.AddWithValue("@Date", date);

        con.Open();
        cmd.ExecuteNonQuery();
    }
}

如您所见,我尝试插入两个字符串和一个 int。

错误发生在:

cmd.ExecuteNonQuery();

附加信息:列名“EventID”无效。
列名“日期”无效。

列名正确。

【问题讨论】:

  • "列名正确。"他们不是。
  • 你能给我们看看表结构吗?
  • 非常抱歉我被困了几个小时,我什至没有注意到表名是错误的。
  • 顺便说一句,Date 不是列的最佳名称
  • ..因为Date 通常是一个保留字,可能会混淆解析器。还有就是太笼统了。最好使用Created_DateApproved_DateEvent_Date,这也解释了值代表什么。

标签: c# sql database insert


【解决方案1】:

我建议这些:

  • 不要忘记像dbo.TableName 这样的表前缀。
  • 始终使用 [] 表示所有名称,例如 [prefix].[tablename].[fieldname]

例如,这个问题的更好查询是:

String sqlStringS = "INSERT INTO [dbo].[Users] ([Username], [EventID], [Date]) VALUES (@Username, @EventID, @Date)";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2020-11-01
    • 1970-01-01
    相关资源
    最近更新 更多