sudhakarthikeyan Ответов: 3

Когда я запускаю код показывает ошибку


string connectionString = ConfigurationManager.ConnectionStrings["OneTransportConnectionString"].ConnectionString;

SqlConnection sqlConnection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;

cmd.CommandText = "select DISTINCT date_TripDate AS TripDate,traveltype.varchar_TravelTypeCode AS TripType,contactss.Value as Mobilenumber time_TripTime AS ShiftTime,trip.int_VehicleTripID as RequestID,";
cmd.CommandText = cmd +"varchar_TravelerID AS AssociateID,(Associate_FirstName + Associate_LastName) AS AssociateName, Gender AS Gender,varchar_ProjectId AS ProjectID,varchar_ProjectName AS ProjectName,";
cmd.CommandText = cmd +"city.varchar_CityName AS City,placeee.varchar_PlaceName AS SourceArea,place.varchar_PlaceName AS DestinationArea,varchar_StatusDescription As Status,reason.varchar_ReasonDescription AS AppType,";
cmd.CommandText = cmd +"from [OneC_988].[dbo].[988_Details_VehicleRequest] request";
cmd.CommandText = cmd +"join [OneC_988].[dbo].[988_Details_VehicleTrip] trip  on request.int_VehicleRequestID=trip.int_VehicleRequestID";
cmd.CommandText = cmd + "and int_CityID ='8'";
cmd.CommandText = cmd +"join [OneC_988].[dbo].[988_Details_TripSheet] sheet on trip.int_VehicleTripID=sheet.int_VehicleTripID";
cmd.CommandText = cmd +"join  [CentralRepository].[dbo].[vw_CentralRepository_Associate_Details] AD on trip.varchar_TravelerID=AD.Associate_ID";
cmd.CommandText = cmd +"left join [CentralRepository].[dbo].[vw_CentralRepository_Contacts] contactss on contactss.Associate_ID = trip.varchar_TravelerID and contactss.Contact_Type='MBL1'";
cmd.CommandText = cmd +"join  [OneC_988].[dbo].[988_Master_Place] place on place.int_PlaceID=trip.int_TripDestinationID";
cmd.CommandText = cmd +"join [OneC_988].[dbo].[988_Master_Place] placeee on placeee.int_PlaceID=trip.int_TripSourceID";
cmd.CommandText = cmd +"join [988_Master_City] city on request.int_CityID=city.int_CityID";
cmd.CommandText = cmd +"join [OneC_988].[dbo].[988_Master_TravelType] traveltype on traveltype.int_TravelTypeID=trip.int_TravelTypeID";
cmd.CommandText = cmd +"join  [OneC_988].[dbo].[988_Master_Reason] reason on reason.int_ReasonID=request.int_ReasonID";
cmd.CommandText = cmd +"join [OneC_988].[dbo].[988_Master_Status] status on status.int_StatusID=trip.int_TripStatusID";
cmd.CommandText = cmd + "where  date_TripDate ='2016-08-24' and trip.int_TripStatusID not in (0)";
cmd.CommandType = CommandType.Text;
cmd.Connection = sqlConnection;
sqlConnection.Open();
reader = cmd.ExecuteReader();
Console.WriteLine("test");
sqlConnection.Close();


когда я запускаю вышеописанное показывает ошибку следующим образом

Неправильный синтаксис рядом с '='.

Приведенная выше ошибка отображается в следующей строке следующим образом

reader = cmd.Метода executereader();

пожалуйста, помогите мне, в чем ошибка в моем вышеприведенном запросе

Что я уже пробовал:

когда я запускаю код показывает ошибку следующим образом

Неправильный синтаксис рядом с '='.

The Praveen Singh

поставить отладку по УМК.CommandType = CommandType. Text; посмотрите, какой окончательный запрос сделан, запустите его по SQL и найдите, где ошибка.

PeejayAdams

Как указано в решении 2, вы заменяете, а не объединяете. Ваш фактический текст команды - "System.Data.SqlClient.SqlCommandwhere date_TripDate = '2016-08-24' и trip.int_
TripStatusID not in (0)", что явно не то, что вам нужно. Если вы действительно должны сделать это таким образом, это должно быть cmd.CommandText + = "что-то"; а не cmd.CommandText += cmd + " что-то"; - cmd - это SqlCommand, а не текст команды (также, если делать кучу манипуляций со строками, делать это в StringBuilder было бы лучшим подходом). Как следует из решения 1 , в любом случае это действительно должен быть вызов хранимой процедуры.

3 Ответов

Рейтинг:
1

ZurdoDev

Как уже упоминалось в комментариях, это очень простая проблема, которую можно решить самостоятельно. Запустите код и посмотрите, что находится в cmd.CommandText после того, как вы закончите. Затем вы даже можете скопировать этот sql в SQL Management Studio в новое окно запроса и очень быстро найти синтаксическую ошибку.

Я бы также предложил вам изменить это в хранимую процедуру, а затем просто вызвать хранимую процедуру. Это гораздо более чистый способ делать вещи, и вы также избегаете этой конкретной проблемы, пытаясь построить строку таким образом.


Рейтинг:
1

Patrice T

Вот ошибка

cmd.CommandText = cmd +"from [OneC_988].[dbo].[988_Details_VehicleRequest] request";
cmd.CommandText = cmd +"join [OneC_988].[dbo].[988_Details_VehicleTrip] trip  on

Когда вторая строка соединяется с первой, вы получаете requestjoin потому что вы забыли поставить пробел после request.
и вы получили то же самое каждый раз, когда строка не заканчивается запятой.


Рейтинг:
0

Jochen Arndt

Попробуйте использовать

cmd.CommandText += "some more SQL statements";

чем
cmd.CommandText = cmd + "some more SQL statements";


Вы также должны префиксировать дополнительные операторы пробелом при их добавлении. Вы бы узнали это при распечатке cmd.CommandText для осмотра.