繁体   English   中英

仅在C#代码中出现SQL语法错误

[英]SQL Syntax Error only in C# code

我有以下代码:

"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()。

我不知道怎么了。

将字符串拆分成多行时的经典问题; 您缺少tblpaymentgateway.paymentgatewayidWHERE之间的空间。

为了帮助避免在多行中分割的字符串中缺少空格,我发现在字符串前使用@符号从字面上接受多行字符串会很有帮助。 像这样:

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

另外,您可能想研究参数化语句并将它们包装在存储过程中的可能性。

您在WHERE之前的第三行缺少空格。

"SELECT tblschemeprojectpaymentgateway.paymentgatewayid, paymentgatewayname FROM " + 
"tblschemeprojectpaymentgateway INNER JOIN tblpaymentgateway ON " +
"tblschemeprojectpaymentgateway.paymentgatewayid = tblpaymentgateway.paymentgatewayid "+
"WHERE tblschemeprojectpaymentgateway.schemeprojectid=`"+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM