public int ColumnCountinFailedQueue(long QueueNo)
{
string query = "select count(QueueNo)
from NS_FailedQueue
where queueid = @QueueNo";
我没有得到QueueNo,这是不正确的。
答案 0 :(得分:2)
string query = "select count(QueueNo) "
+ "from NS_FailedQueue "
+ "where queueid = " + QueueNo.ToString();
答案 1 :(得分:0)
它应该是这样的:
public int ColumnCountinFailedQueue(long QueueNo)
{
string query = "select count(QueueNo) from NS_FailedQueue where queueid = "+QueueNo.ToString();
}
答案 2 :(得分:0)
string query = "select count(QueueNo) "
+ "from NS_FailedQueue "
+ "where queueid = " + QueueNo;
从我的角度来看,queueid可以是整数... 如果不是..
像QueueNo.tostring()
这样的队列答案 3 :(得分:0)
我讨厌使用+的concat字符串,所以这是我的解决方案
string query = string.Format(@"select count(QueueNo) from NS_FailedQueue where queueid={0}", QueueNo);
但我认为最好使用sqlparameter
答案 4 :(得分:0)
我看到你在这里尝试进行参数化查询。你遗漏了问题中的一些关键元素。如果您使用的是原始ADO.NET,则参数化查询如下所示:
public int ColumnCountinFailedQueue(long QueueNo)
{
string query = "select count(QueueNo)
from NS_FailedQueue
where queueid = @QueueNo";
int queueCount = 0;
using (SqlConnection connection = new SqlConnection("connectionString"))
using (SqlCommand getQueueCountCommand = new SqlCommand(query, connection))
{
getQueueCountCommand.Parameters.AddWithValue("@QueueNo", QueueNo);
connection.Open();
queueCount = (int)getQueueCountCommand.ExecuteScalar();
}
return queueCount;
}
此外,由于您只获得一行一行,您可以使用ExecuteScalar来获取结果。
应该注意的是,您将参数连接到查询末尾的其他答案作为字符串将起作用,并且在此特定情况下,SQL注入不容易受到攻击,因为方法参数上的long强制它为一个号码。问题在于,如果将此参数更改为字符串,则它将容易受到SQL注入的攻击。</ p>