Short:
Оператор SQL в моем коде C # не работает. with(nolock)
нарушает код.
Подробная:
Ниже приведены мои ошибки и код, где я получаю ошибку. Код должен подключиться к моей базе данных SQL Server (код подключения работает нормально), а затем выполнить запрос. Этот запрос получит IP-адреса всех событий, которые имеют URI "бла". Кажется, проблема в моей with(nolock)
команде, которую я должен использовать. Я должен использовать это как групповой стандарт для всех запросов T-SQL.
Я некоторое время гуглил, но, похоже, ничего не подходит к моей проблеме, и найденные мной исправления еще не сработали. Любая помощь с моим кодом или ссылками будет принята с благодарностью.
Ошибка:
System.Data.SqlClient.SqlException был пойман Сообщение = Неверно
синтаксис рядом с ключевым словом «с». Если это утверждение является общей таблицей
выражение, предложение xmlnamespaces или контекст отслеживания изменений
предложение, предыдущий оператор должен заканчиваться точкой с запятой.
Источник = .Net SqlClient Поставщик данных ErrorCode = -2146232060 Класс = 15
LineNumber = 1 Number = 319 Процедура = "" Сервер = Состояние = 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'";