sql语法错误?在我的c#img url字符串中

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

您好,我有一个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 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有一个值),语法正确吗?