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() + "`";