短的:
我的 C# 代码中的 SQL 语句不起作用。with(nolock)
正在破坏代码。
详细的:
以下是我的错误和出现错误的代码。该代码应该连接到我的 SQL Server 数据库(连接代码工作正常)然后运行查询。此查询将获取所有具有“blah”uri 的事件的 IP 地址。问题似乎是我with(nolock)
需要使用的命令。我必须使用它,因为它是所有 T-SQL 查询的组标准。
我用谷歌搜索了一段时间,但似乎没有什么适合我的问题,而且我发现的修复还没有奏效。对我的代码或链接的任何帮助将不胜感激。
错误:
System.Data.SqlClient.SqlException 在关键字“with”附近被捕获消息=语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结束。
Source=.Net SqlClient 数据提供程序 ErrorCode=-2146232060 Class=15 LineNumber=1 Number=319 Procedure="" Server= State=1
代码:
try
{
//create sql reader to display data
SqlDataReader myReader = null;
//create string to enter data into database
string insString = @"select c_ip from @dates with(nolock) where cs_uri like 'blah'";
SqlCommand myCommand = new SqlCommand(insString, DbConnection);
//populate and sanitize parameters
myCommand.Parameters.Add("@dates", SqlDbType.VarChar, 100);
myCommand.Parameters["@dates"].Value = currentdate;
//execute the command
myReader = myCommand.ExecuteReader();
//read all results and print them to output
while (myReader.Read())
{
//get IPs
String ipmix = myReader["c_ip"].ToString();
mainIPs.Add(ipmix);
}
}
catch (Exception e)
{
Console.WriteLine("The query connection to the datebase has timed out.\n");
Console.WriteLine(e.ToString());
Console.ReadLine();
}
解决方案:
更改代码:
//create string to enter data into database
string insString = @"select c_ip from @dates with(nolock) where cs_uri like 'blah'";
至:
//create string to enter data into database
string insString = @"select c_ip from " + currentdate + " with(nolock) where cs_uri like '%blah'";