【问题标题】:Incorrect sql syntax? (Beginner stuff)sql语法不正确? (初学者的东西)
【发布时间】:2018-03-10 08:08:30
【问题描述】:

使用返回错误的 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;
            }
        }
}

【问题讨论】:

  • 您不能将Insertwhere 结合使用。 WHERE 子句用于过滤数据,但如果数据尚不存在并且将要插入,则这没有意义。也许您打算更新数据?
  • 我愿意!非常感谢:)
  • 请使用参数化查询。您正在向黑客开放您的数据库。 stackoverflow.com/a/652999/4180382
  • 这只是一个高中项目,但我会试试这个,谢谢。
  • 1.备份您的数据库。 2. 使用', '', 0, 0); DROP TABLE EventsManaged; -- 的AreaType 尝试您的代码

标签: c# mysql sql


【解决方案1】:

有两点需要注意:

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

【讨论】:

    【解决方案2】:

    我想你想要一个这样的 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 子句。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多