Ошибка синтаксиса SQL только в коде C # - PullRequest
0 голосов
/ 08 марта 2012

У меня есть этот код:

"SELECT tblschemeprojectpaymentgateway.paymentgatewayid, paymentgatewayname FROM " + 
"tblschemeprojectpaymentgateway INNER JOIN tblpaymentgateway ON " +
"tblschemeprojectpaymentgateway.paymentgatewayid = tblpaymentgateway.paymentgatewayid"+
"WHERE tblschemeprojectpaymentgateway.schemeprojectid=`"+
SchemeProjectID.ToString()+"`", SqlConnection1);
sqlcmd.CommandType = CommandType.Text;

SqlConnection1.Open();

Npgsql.NpgsqlDataReader dr = sqlcmd.ExecuteReader();

, который запрашивает базу данных Postgresql.SchemeProjectID является Guid.Этот код прекрасно выполняется с помощью инструмента запросов к базе данных pgAdmin, но выдает синтаксическую ошибку в коде C # где-то вокруг «tblschemeprojectpaymentgateway».

Я пробовал SchemeProjectID в кавычках, обратном ключе и в том виде, в каком он есть - с и без.ToString ().

Не могу понять, что не так.

Ответы [ 3 ]

5 голосов
/ 08 марта 2012

Классическая проблема при разбиении строк на несколько строк;вам не хватает пробела между tblpaymentgateway.paymentgatewayid и WHERE.

3 голосов
/ 08 марта 2012

Чтобы избежать пропусков в строках, разбитых на несколько строк, я нашел полезным использовать символ @ перед строкой, чтобы буквально получить многострочную строку.Например:

string command = @"SELECT tblschemeprojectpaymentgateway.paymentgatewayid, paymentgatewayname FROM
                                tblschemeprojectpaymentgateway INNER JOIN tblpaymentgateway ON
                                tblschemeprojectpaymentgateway.paymentgatewayid = tblpaymentgateway.paymentgatewayid
                                WHERE tblschemeprojectpaymentgateway.schemeprojectid=`" + SchemeProjectID.ToString() + "`";

Кроме того, вы можете захотеть изучить параметризацию ваших операторов и, возможно, обернуть их в хранимые процедуры.

2 голосов
/ 08 марта 2012

Вам не хватает пробела в третьей строке перед WHERE.

"SELECT tblschemeprojectpaymentgateway.paymentgatewayid, paymentgatewayname FROM " + 
"tblschemeprojectpaymentgateway INNER JOIN tblpaymentgateway ON " +
"tblschemeprojectpaymentgateway.paymentgatewayid = tblpaymentgateway.paymentgatewayid "+
"WHERE tblschemeprojectpaymentgateway.schemeprojectid=`"+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...