C# 在ASP.NET中使用MySqlCommand时出现MySQL语法错误

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

下面是我测试过的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_info.user_id = '0001'
现在我正试图将正在工作的SQL转换为asp.net
MySqlCommand
,但它无法工作并显示语法错误

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。当您尝试运行此代码时,您还收到一条错误消息,您应该始终在问题中包含错误消息。它实际上称为逐字字符串或逐字字符串文字。字符串文字本身意味着其他东西。