sql语法不正确? (初学者的东西)

时间:2018-03-10 08:08:30

标签: c# mysql sql

使用sql查询运行一个方法将一些数据插入表EventsManaged,返回错误

  

“'WHERE'附近的语法不正确”

但是我看不出自己的错误?

该方法位于EventDAL中,并从打开的表单中调用。我使用了断点并检查了输入的正确数据类型 - 任何帮助?

public static int AddAllToEventsManaged( string areaType, string areaName, double cost, double costPer, int v, int id)            
{    
            using (SqlConnection connection = new SqlConnection(_connectionstring))
            {
                connection.Open();
                string SQLquery1 = string.Format("INSERT INTO EventsManaged (AreaType, AreaName, Cost, CostPer) VALUES ('{0}','{1}','{2}','{3}') WHERE AreaID = '{4}' AND CustomerID = '{5}'", areaType, areaName, cost, costPer, v, id);
                SqlCommand insertProjectCommand = new SqlCommand(SQLquery1, connection);
                int rowsAffected = insertProjectCommand.ExecuteNonQuery();
                connection.Close();
                return rowsAffected;
            }
        }
}

2 个答案:

答案 0 :(得分:1)

要注意两件事:

  • 您应该使用sql命令参数,而不是使用包含的值格式化命令字符串,您可以将这些参数添加到SqlCommand的Parameters集合中。
  • 您正在混合两种方法来插入SQL中的东西。您可以INSERT ... SELECT ... WHEREINSERT ... VALUES,但有VALUES的人不允许/需要WHERE。我把链接放到了MySql文档中,但我认为它对于其他SQL RDBMS(对于SQL Server来说是一样的)是相同的。

答案 1 :(得分:0)

我想你想要一个像这样的UPDATE查询:

string SQLquery1 = string.Format("UPDATE EventsManaged SET AreaType = '{0}', AreaName = '{1}', Cost = '{2}', CostPer = '{3}' WHERE AreaID = '{4}' AND CustomerID = '{5}'", areaType, areaName, cost, costPer, v, id);

这将更新满足WHERE条件的现有行。 INSERT语句添加了一个新行,因此这里没有WHERE子句。希望它有所帮助。