我有以下声明:
SELECT [nozzles].[nozzle_tag],[nozzles].[id]
FROM [dispensers]
INNER JOIN [nozzles]
ON [dispenser_id] = [dispensers].[id]
INNER JOIN (SELECT * FROM assets
WHERE [i4_Device_Name] = 'EH004T_SOURCE2'
AND [i4_site_name] = 'Les Loges - H2e Station (EH004R)')assets
ON [asset_id] = [assets].[id]
WHERE [dispenser_tag] ='Dispenser 2';
当我在SSMS中执行它时,它工作得非常好。
问题是,当使用SQLcommand
运行此SQL时,我收到一条错误消息:
“Loges”附近的语法不正确。
我不明白为什么。
上面的命令是从一个日志文件中提取出来的,它正是使用SQL命令
发送的。
C#代码是:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(HySoSQLCommandBuilder.GetAllNozzleOfDispenser(locationID, dispenserTag), connection))
{
logger.Info("SQL request {request}", HySoSQLCommandBuilder.GetAllNozzleOfDispenser(locationID, dispenserTag));
using (SqlDataReader reader = command.ExecuteReader())
{
try
{
while (reader.Read())
if (reader.HasRows)
{
list.Add(new nozzle((string)reader["nozzle_tag"], (int)reader["id"]));
}
}
catch { }
}
}
使用HySoSQLCommandBuilder。GetAllNozzleOfDispenser()
非常直截了当:
public static string GetAllNozzleOfDispenser(AssetLocationID assetLocation, string dispenserTag)
{
return $@"SELECT [nozzles].[nozzle_tag],[nozzles].[id]
FROM [dispensers]
INNER JOIN [nozzles]
ON [dispenser_id] = [dispensers].[id]
INNER JOIN (SELECT * FROM assets
WHERE [i4_Device_Name] = '{assetLocation.i4DeviceName}'
AND [i4_site_name] = '{assetLocation.i4SiteName}')assets
ON [asset_id] = [assets].[id]
WHERE [dispenser_tag] ='{dispenserTag}';";
}
从代码外部无法访问任何注入的值。它们不是来自用户可访问的可编辑字段。如果SQL注入发生,那么这意味着它在源代码中,由处理代码的人完成,并且已经可以对数据库做任何他们想做的事情,而不需要对SQL注入进行编码。
更改了代码,因此它使用SQL参数代替,现在它正在工作。我不明白为什么它不起作用,这让我很恼火,因为在不理解的情况下修复一个问题不是它应该如何工作。但至少现在它起作用了。
去年我在做一个项目,导出和导入都很好,但最近我决定导入我的sql文件,由于每个表中都有很多错误,我无法导入。 一旦我停止工作,我就删除了xampp,现在决定再次下载它,但我被困在导入上,这是我的完整文件: http://pastebin.com/mddVUU1i 我的错误如下: 创建表(int(11)Not NULL, varchar(50)Not NULL,datetime Not NULL D
问题内容: 给我这个: 为什么不: @JosephPla您明白了,谢谢。如何排序数字之类的字符串? 问题答案: 尝试 但是您应该研究将列类型更改为正确的类型。
问题内容: 这个问题已经在这里有了答案 : MySQL中的CHECK约束不起作用 (8个答案) 2年前关闭。 我创建了带有检查约束的表计划: 当我插入违反检查约束的值时,sql报告没有错误。 我插入了一个在order_date之前的dely_date。 问题答案: 与中的约束一样被忽略 工作的实施例使用: LiveDemo 您可以使用触发器进行验证: SqlFiddleDemo
问题内容: 我从事SQL的时间不长,但是我想我知道,通过将SQL语句包装在事务中可以完成所有语句,或者没有一个完成。这是我的问题。我有一个具有lineitem集合的订单对象。订单项与order.OrderId相关。我已经验证 所有ID都已设置并且正确, 但是当我尝试保存(插入)订单时,我得到 的INSERT语句与FOREIGN KEY约束“FK_OrderItemDetail_Order”冲突。
在Apache J Meter中用1个线程触发请求时,我得到以下错误-org.Apache.http.nohttpresponseException:xxx.tc.at.xxx.net:8443未能在org.Apache.http.impl.conn.defaultthtpresponseparser.parsehead(Defaultthtpresponseparser.java:141)在or