C# 在ASP.NET中使用MySqlCommand时出现MySQL语法错误
下面是我测试过的SQL查询,运行良好C# 在ASP.NET中使用MySqlCommand时出现MySQL语法错误,c#,mysql,asp.net,C#,Mysql,Asp.net,下面是我测试过的SQL查询,运行良好 Select data_info.user_id, data_info.type_id, data_info.specific_title, data_info.content, life_area.type_id, life_area.type_id From data_info Left Join life_area On data_info.type_id = life_area.id Where data
Select
data_info.user_id, data_info.type_id, data_info.specific_title,
data_info.content, life_area.type_id, life_area.type_id
From
data_info
Left Join
life_area On data_info.type_id = life_area.id
Where
data_info.user_id = '0001'
现在我正试图将正在工作的SQL转换为asp.netMySqlCommand
,但它无法工作并显示语法错误
MySqlCommand cmd = new MySqlCommand(
"Select data_info.user_id,data_info.type_id,data_info.specific_title,data_info.content,"+
"life_area.type_id,life_area.type_id" +
"FROM data_info LEFT JOIN life_area ON data_info.type_id = life_area.id" +
"Where data_info.user_id='0001'" , conn);
您正在将关键区域(例如
life\u区域)中没有空格的字符串组合在一起。键入“+”FROM data\u info”
将为您提供life\u区域。键入“+”FROM data\u info
;这使您的SQL无效。使用@
()字符串来兑现回车可能是最好的解决方案:
MySqlCommand cmd = new MySqlCommand(
@"Select data_info.user_id,data_info.type_id,data_info.specific_title,data_info.content,
life_area.type_id,life_area.type_id
FROM data_info LEFT JOIN life_area ON data_info.type_id = life_area.id
Where data_info.user_id='0001'" , conn);
打印出代码中的SQL字符串,仔细查看,尤其是缺少comas或空格之类的内容。我看不到字符串之间的空格,如下面的
。。。area.type_id“(space?)+”FROM…
看起来您在选择列表的末尾和FROM
之间缺少一个空格。我建议改为创建一个逐字字符串(在它前面加一个“@”),这样可以包含换行符,而不是当前的连接混乱。另外,在将来,您真的应该包括您收到的错误消息。@juharr,因为我刚刚开始学习asp.net,请再解释一下,thanks@epiphany具体来说,您的查询是“…life\u area.type_idFROM…”,因为第二个字符串不以空格结尾,第三个字符串不以空格开头。如果在字符串前面放置一个@
,它允许它跨越多行,并且称为a。当您尝试运行此代码时,您还收到一条错误消息,您应该始终在问题中包含错误消息。它实际上称为逐字字符串或逐字字符串文字。字符串文字本身意味着其他东西。