当试图使用SQL向数据库插入数据时,出现 "无效的列名"[英] "Invalid column name" when trying to insert data into database using SQL

本文是小编为大家收集整理的关于当试图使用SQL向数据库插入数据时,出现 "无效的列名"的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我试图使用Visual Studio将新值插入数据库,这是我的代码:

SqlCommand cmd = new SqlCommand();

SqlConnection conn = new SqlConnection();
conn.ConnectionString = dbconnectionstring;
conn.Open();

cmd.Connection = conn;
cmd.CommandText = "INSERT INTO Data_ConfigInfo (TypeID, Name, ValidFromDate, ValidToDate, ValidFromSOP, ValidToSOP, Description)" +
                  "VALUES(@TypeID, @Name, @ValidFromDateTime, @ValidToDateTime, @ValidFromSOP, @ValidToSOP, @Description)";

cmd.Parameters.AddWithValue("TypeID", Logg.TypeID);
cmd.Parameters.AddWithValue("Name", Logg.Name);

if(Logg.ValidFrom.Equals(null)) {
     cmd.Parameters.AddWithValue("@ValidFromDateTime", DBNull.Value);
}
else
{
    cmd.Parameters.AddWithValue("@ValidFromDateTime", Logg.ValidFrom);
}

if (Logg.ValidTo.Equals(null))
{
    cmd.Parameters.AddWithValue("@ValidToDateTime", DBNull.Value);
}
else
{
    cmd.Parameters.AddWithValue("@ValidToDateTime", Logg.ValidFrom);
}

cmd.Parameters.AddWithValue("@ValidFromSOP", Logg.ValidFromSOP);
cmd.Parameters.AddWithValue("@ValidToSOP", Logg.ValidToSOP);
cmd.Parameters.AddWithValue("@Description", Logg.Description);

cmd.ExecuteNonQuery();
conn.close();
conn.dispose();

但是在线

cmd.ExecuteNonQuery(); 

我得到错误

有效todateTime和有效FromDateTime的无效列名.

两个都是DateTime变量.我似乎找不到错误.有任何想法吗?

这就是我的数据外观

 datatable结构

推荐答案

您的DB表具有列ValidFromDateTime, ValidToDateTime,但是INSERT语句中的列列表具有ValidFromDate, ValidToDate.您确定在此处发布时不是错字吗?

其他推荐答案

您是否忘记了'@'?

 cmd.Parameters.AddWithValue("TypeID", Logg.TypeID);
 cmd.Parameters.AddWithValue("Name", Logg.Name);

 cmd.Parameters.AddWithValue("@TypeID", Logg.TypeID);
 cmd.Parameters.AddWithValue("@Name", Logg.Name);

本文地址:https://itbaoku.cn/post/2304462.html

问题描述

I'm trying to insert new values into my database using visual studio and here is my code:

SqlCommand cmd = new SqlCommand();

SqlConnection conn = new SqlConnection();
conn.ConnectionString = dbconnectionstring;
conn.Open();

cmd.Connection = conn;
cmd.CommandText = "INSERT INTO Data_ConfigInfo (TypeID, Name, ValidFromDate, ValidToDate, ValidFromSOP, ValidToSOP, Description)" +
                  "VALUES(@TypeID, @Name, @ValidFromDateTime, @ValidToDateTime, @ValidFromSOP, @ValidToSOP, @Description)";

cmd.Parameters.AddWithValue("TypeID", Logg.TypeID);
cmd.Parameters.AddWithValue("Name", Logg.Name);

if(Logg.ValidFrom.Equals(null)) {
     cmd.Parameters.AddWithValue("@ValidFromDateTime", DBNull.Value);
}
else
{
    cmd.Parameters.AddWithValue("@ValidFromDateTime", Logg.ValidFrom);
}

if (Logg.ValidTo.Equals(null))
{
    cmd.Parameters.AddWithValue("@ValidToDateTime", DBNull.Value);
}
else
{
    cmd.Parameters.AddWithValue("@ValidToDateTime", Logg.ValidFrom);
}

cmd.Parameters.AddWithValue("@ValidFromSOP", Logg.ValidFromSOP);
cmd.Parameters.AddWithValue("@ValidToSOP", Logg.ValidToSOP);
cmd.Parameters.AddWithValue("@Description", Logg.Description);

cmd.ExecuteNonQuery();
conn.close();
conn.dispose();

But at the line

cmd.ExecuteNonQuery(); 

I get the error

invalid column name for ValidToDateTime and ValidFromDateTime.

Both are datetime variables. I can't seem to find the error. Any ideas?

This is how my datatable looks

Datatable structure

推荐答案

Your DB table has columns ValidFromDateTime, ValidToDateTime, but your column list in the INSERT statement has ValidFromDate, ValidToDate. Are you sure that it is not a typo when posting here?

其他推荐答案

Did you forgot '@'?

 cmd.Parameters.AddWithValue("TypeID", Logg.TypeID);
 cmd.Parameters.AddWithValue("Name", Logg.Name);

 cmd.Parameters.AddWithValue("@TypeID", Logg.TypeID);
 cmd.Parameters.AddWithValue("@Name", Logg.Name);