【发布时间】:2014-07-03 07:36:26
【问题描述】:
您好,这是我的问题
SELECT StraightDist FROM StraightLineDistances
WHERE (FirstCity='007' AND SecondCity='017');
如何将其传递给 sql 语句? 我想用变量替换城市编号“007”和“017”
string destcity;
string tempcityholder1;
我试过的是这个
SqlCommand mybtncmd2 = new SqlCommand("SELECT StraightDist FROM StraightLineDistances WHERE (FirstCity='" + tempcityholder1 + "' AND SecondCity='" + destcity + "');", mybtnconn2);
它没有给我预期的输出。
但是当我尝试使用下面给出的原始 sql 时,它起作用了。
SqlCommand mybtncmd2 = new SqlCommand("SELECT StraightDist FROM StraightLineDistances WHERE (FirstCity='007' AND SecondCity='017');", mybtnconn2);
谁能指出这里的错误? 或更好的解决方案。 这是针对个人应用程序,安全性不是必须的,因此不需要参数化查询。而且我不知道如何使用多个参数实现参数化查询。如果有人可以解释如何使用参数化查询,那就太好了,我将非常感激。但就目前而言,我需要更正这一点。
任何帮助都会很棒..
如果使用参数化查询,则确定
我的作品是这样的
SqlConnection mybtnconn2 = null;
SqlDataReader mybtnreader2 = null;
mybtnconn2 = new SqlConnection("");
mybtnconn2.Open();
SqlCommand mybtncmd2 = new SqlCommand("SELECT StraightDist FROM StraightLineDistances WHERE (FirstCity='007' AND SecondCity='017');", mybtnconn2);
mybtnreader2 = mybtncmd2.ExecuteReader();
while (mybtnreader2.Read())
{
MessageBox.Show(mybtnreader2.GetValue(0) + "My btn readre 2 value");
}
谁能给我一个不会使这种结构复杂化的解决方案。 如果我使用参数化查询,我该如何编辑
mybtnreader2 = mybtncmd2.ExecuteReader();
这个说法?
【问题讨论】:
-
试试这个 SELECT StraightDist FROM StraightLineDistances WHERE (FirstCity='''' + tempcityholder1 + ''''+ AND +''''SecondCity='''' + destcity + "')跨度>
-
@rene 请在回答前完整阅读。我不需要参数化查询我只需要更正这个
-
@Sahil 如果您有这样的代码,那么您很容易受到所谓的 SQL 注入攻击。归根结底,这意味着黑客可以轻松控制您的数据库,甚至可能控制您的整个服务器。你确定要这个? rene 所链接的内容提供了一种具有相同结果的更好方法,但可以防止这种攻击。
-
随心所欲,我很遗憾程序员不愿意学习。再见!
-
@Sahil 副本提供了完美的解决方案,5 个当前答案也是如此。不要走你明显想走的路。
标签: c# sql sql-server sqlcommand