sql语法错误?在我的c#img url字符串中
您好,我有一个sql语法错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行的“[User]u ON u.UserID=wp.UserID LEFT JOIN Pictures p ON p.UserID=u.UserID WHE”附近使用的正确语法 我的代码:sql语法错误?在我的c#img url字符串中,c#,asp.net,mysql,sql,html,C#,Asp.net,Mysql,Sql,Html,您好,我有一个sql语法错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行的“[User]u ON u.UserID=wp.UserID LEFT JOIN Pictures p ON p.UserID=u.UserID WHE”附近使用的正确语法 我的代码: using (OdbcCommand cmd = new OdbcCommand("SELECT wp.WallPostings, p.PicturePath FROM WallPosting wp LEF
using (OdbcCommand cmd = new OdbcCommand("SELECT wp.WallPostings, p.PicturePath FROM WallPosting wp LEFT JOIN [User] u ON u.UserID = wp.UserID LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
{
//("SELECT wp.WallPostings, p.PicturePath FROM WallPosting wp LEFT JOIN [User] u ON u.UserID = wp.UserID LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
using (OdbcDataReader reader = cmd.ExecuteReader())
{
test1.Controls.Clear();
while (reader.Read())
{
System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
div.Attributes["class"] = "test";
//div.Style["float"] = "left";
div.ID = "test";
Image img = new Image();
img.ImageUrl = String.Format("{1}", reader.GetString(0));
// this line needs to be represented in sql syntax
img.AlternateText = "Test image";
div.Controls.Add(img);
div.Controls.Add(ParseControl(String.Format("{0}", reader.GetString(0))));
div.Style["clear"] = "both";
test1.Controls.Add(div);
}
}
}
}
}
我的数据库结构:
编辑:
如果我在mysql语法中将用户的方括号去掉,则会得到一个错误:
where子句中的“UserID”列不明确
重新编辑:
添加可湿性粉剂。WHERE子句中的to UserID出现新错误:
索引(从零开始)必须大于或等于零且小于参数列表的大小。
我确信这是由于这一行:
img.ImageUrl = String.Format("{1}", reader.GetString(0));
替换此项:
WHERE UserID=
为此:
WHERE wp.UserID=
替换此项:
WHERE UserID=
为此:
WHERE wp.UserID=
UserID存在于多个表中,因此必须在WHERE子句中对其进行完全限定
V
... WHERE wp.UserID= ...
^
UserID存在于多个表中,因此必须在WHERE子句中对其进行完全限定
V
... WHERE wp.UserID= ...
^
您可以在查询中同时使用
Picture
和User
,这两者都有一个UserId
列。您需要告诉您的查询使用哪一个
例如
编辑1
而且
在String.Format
调用中,将“{1}”
替换为“{0}”
<代码>“{1}”告诉Format查找您正在传递的第二个值,而不是第一个值(因为它是基于零的)
编辑2
至于原始问题(为了完整性起见),请删除第一行SQL中
[User]
周围的方括号。您在查询中同时使用Picture
和User
,两者都有UserId
列。您需要告诉您的查询使用哪一个
例如
编辑1
而且
在String.Format
调用中,将“{1}”
替换为“{0}”
<代码>“{1}”告诉Format查找您正在传递的第二个值,而不是第一个值(因为它是基于零的)
编辑2
对于原始问题(为了完整性起见),请删除第一行SQL中
[User]
左右的方括号。索引(从零开始)必须大于或等于零,并且小于参数列表的大小。@Garrith Graham,好的,这似乎不是MySQL语法。在那个错误中给出了行号吗?@Garrith Graham,试着用“{0}”替换“{1}”。“{1}”告诉Format查找要传递的第二个值,而不是第一个值。索引(从零开始)必须大于或等于零,并且小于参数列表的大小。@Garrith Graham,好的,这似乎不是MySQL语法。在那个错误中给出了行号吗?@Garrith Graham,试着用“{0}”替换“{1}”。“{1}”告诉Format查找您正在传递的第二个值,而不是第一个值。索引(从零开始)必须大于或等于零,并且小于参数列表的大小。请尝试img.ImageUrl=String.Format(“{0}”,reader.GetString(1))代码>它是GetString上的索引,将获得结果集的第二列。索引(从零开始)必须大于或等于零,并且小于参数列表的大小。请尝试img.ImageUrl=String.Format(“{0}”,reader.GetString(1))
它是GetString上的索引,将获得结果集的第二列。为什么要在[User]
周围添加括号?如果没有嵌入到其他代码中,该命令是否有效?如果您在数据库中输入了直接SQL(用户ID有一个值),语法是否正确?为什么在[User]
周围添加括号?如果没有嵌入到其他代码中,该命令是否有效?如果在数据库中输入直接SQL(用户ID有一个值),语法正确吗?