C# 仅在C代码中出现SQL语法错误
我有以下代码:C# 仅在C代码中出现SQL语法错误,c#,postgresql,C#,Postgresql,我有以下代码: "SELECT tblschemeprojectpaymentgateway.paymentgatewayid, paymentgatewayname FROM " + "tblschemeprojectpaymentgateway INNER JOIN tblpaymentgateway ON " + "tblschemeprojectpaymentgateway.paymentgatewayid = tblpaymentgateway.paymentgatewayid"+
"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数据库。SchemeProject是一个Guid。这段代码在pgAdmin数据库查询工具中执行良好,但在tblschemeprojectpaymentgateway周围的C代码中抛出语法错误
我已经在引号、backtics和原样中尝试了SchemeProjectID,有没有.ToString
我想不出是怎么回事。将字符串拆分成几行时出现的经典问题;您缺少tblpaymentgateway.paymentgatewayid和WHERE之间的空格。您缺少WHERE前面第三行的空格
为了避免在多行分割的字符串中丢失空格,我发现在字符串前面使用@符号可以从字面上理解多行字符串。例如:
string command = @"SELECT tblschemeprojectpaymentgateway.paymentgatewayid, paymentgatewayname FROM
tblschemeprojectpaymentgateway INNER JOIN tblpaymentgateway ON
tblschemeprojectpaymentgateway.paymentgatewayid = tblpaymentgateway.paymentgatewayid
WHERE tblschemeprojectpaymentgateway.schemeprojectid=`" + SchemeProjectID.ToString() + "`";
此外,您可能需要研究语句的参数化,并可能将它们包装到存储过程中。请公布确切的错误。共有4个tblschemeprojectpaymentgateway。错误在哪一个附近?也许“是错误的符号,一定是”
string command = @"SELECT tblschemeprojectpaymentgateway.paymentgatewayid, paymentgatewayname FROM
tblschemeprojectpaymentgateway INNER JOIN tblpaymentgateway ON
tblschemeprojectpaymentgateway.paymentgatewayid = tblpaymentgateway.paymentgatewayid
WHERE tblschemeprojectpaymentgateway.schemeprojectid=`" + SchemeProjectID.ToString() + "`";