【问题标题】:build insert statement error Https has already been declared构建插入语句错误 Https has already been declared
【发布时间】:2015-02-07 12:13:52
【问题描述】:

我有一个方法可以从 UI 中获取多个图像并将它们存储在缓存中,完成后它会调用一个方法,然后引用缓存将图像拉出然后将它们传递给数据库,目前这个insert 语句当前一次只执行一个,因此对于一个用户来说,它可能对数据库进行 7 次点击。

我想要实现的是这样的,在 SQL 中你会做(一次插入数据库中的多个项目)

insert into table1 (First,Last) 
values 
     ('Fred','Smith'),
     ('John','Smith'),
     ('Michael','Smith'),
     ('Robert','Smith');

我的代码目前看起来像这样

public void SaveImages(List<Images> Images, Int64 userId)
{
  var extension = Images.Aggregate(string.Empty, (current, item) => current + string.Format("({0},{1},{2},{3},{4},{5}),", userId, item.ImageName, item.ImageUrl, 1, DateTime.Now, null));
}

一旦完成扩展看起来像这样

(1253,xkvkvy4ldmfbhlmftqsc,https://res.cloudinary.com/dncu6pqpm/image/upload/v1423309462/rfefef.jpg,1,07/02/2015 11:45:29,),
(1253,pa0niomwvyzl47qjlxna,https://res.cloudinary.com/dncu6pqpm/image/upload/v1423309471/iuytre.jpg,1,07/02/2015 11:45:29,),
(1253,mymvektwddgco9nvbaap,https://res.cloudinary.com/dncu6pqpm/image/upload/v1423309479/sdfgh.jpg,1,07/02/2015 11:45:29,),
(1253,fxlftcx9jgrs9c7sjnv4,https://res.cloudinary.com/dncu6pqpm/image/upload/v1423309489/98iuiu.jpg,1,07/02/2015 11:45:29,),

我调用插入语句并传入扩展名

var query = @"
           INSERT INTO [User].Images
                  (UserId, FileName, ImageUrl, Active, CreatedDate, DeletedDate)

            VALUES
                  " + extension;

sqlCon.Query(query);

但由于以下原因而失败

The label 'https' has already been declared. Label names must be unique within a query batch or stored procedure.

我已经用谷歌搜索了这个错误,但我没有收到任何好的解决方案,因此我在这里问。

【问题讨论】:

  • 首先,您使用的是什么 ORM? Query 不是 EF、NH 或 Linq to SQL 的一部分。其次,问题是您使用字符串连接而不是参数化查询或 ORM 的插入方法。不管你怎么逃,你在创建这样的sql语句时总是会遇到麻烦。

标签: c# asp.net-mvc-5 sql-insert


【解决方案1】:

尝试将 url(和其他字符串值)放在引号之间:

(1253,'xkvkvy4ldmfbhlmftqsc','https://res.cloudinary.com/dncu6pqpm/image/upload/v1423309462/rfefef.jpg',1,07/02/2015 11:45:29,)

【讨论】:

  • 这似乎可行,但它给了我另一个错误,即“12”附近的语法不正确。但我找不到“12”。在我提供的示例中
  • 也将日期放在引号中,并提供最后一列(如果这是您的意图,请使用“NULL”):1253,'xkvkvy4ldmfbhlmftqsc','https://res.cloudinary.com/dncu6pqpm/image/upload/v1423309462/rfefef.jpg',1,'07/02/2015 11:45:29','NULL'
  • 完全按照您的建议完成,现在我在 ',' 附近得到不正确的语法。
  • extension的值是多少?
  • 同上,不同的是url、name、date和null有单引号
猜你喜欢
  • 2018-09-21
  • 2019-07-23
  • 2019-04-25
  • 2011-10-05
  • 2021-03-23
  • 2020-03-13
  • 2016-11-18
  • 1970-01-01
相关资源
最近更新 更多