【问题标题】:sql snytax error, and string issue related to sqlsyntaxsql 语法错误,以及与 sqlsyntax 相关的字符串问题
【发布时间】:2011-07-26 06:29:36
【问题描述】:

大家好,当我在下面的代码中的 select 语句中添加 idWallPosting 时,我遇到了一个 sqlsyntax 错误:

using (OdbcCommand cmd = new OdbcCommand("SELECT idWallPosting, 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 wp.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.ID = String.Format("{0}", reader.GetString(2));
                // this line is responsible, problem here and my sqlsntax, im trying to set the SELECT idWallPosting for the div ID
                Image img = new Image();
                img.ImageUrl = String.Format("{0}", reader.GetString(1));

                img.AlternateText = "Test image";

                div.Controls.Add(img);
                div.Controls.Add(ParseControl(String.Format("&nbsp&nbsp " + "{0}", reader.GetString(0))));
                div.Attributes.Add("onclick", "return confirm_delete();");

                div.Style["clear"] = "both";
                test1.Controls.Add(div);

            }
        }
    }

我的数据库如下所示:

在我的代码中,我试图将 div.ID 设置为 WallPosting 表中的当前 idWallPosting,所以我也不确定我是否正确。

编辑:

错误:

无法将“System.Int32”类型的对象转换为“System.String”类型。

我认为与这一行有关:

div.ID = String.Format("{0}", reader.GetString(2));

【问题讨论】:

  • 开始吧,idwallposting 后你是不是少了一个逗号?

标签: c# asp.net mysql sql html


【解决方案1】:

你需要一个逗号。这个:

using (OdbcCommand cmd = new OdbcCommand("SELECT idWallPosting 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 wp.UserID=" + userId + " ORDER BY idWallPosting DESC", cn))

应该是这样的:

using (OdbcCommand cmd = new OdbcCommand("SELECT idWallPosting, 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 wp.UserID=" + userId + " ORDER BY idWallPosting DESC", cn))

逗号:--------------------------------------------- -------------------------------------------------- -----^

编辑:

您可以尝试GetValue 而不是GetString。 GetValue 的说明:

以原始格式获取指定序号的列的值。

【讨论】:

  • 哈哈是的,但我有一个新的错误,所以如果你也可以帮助我编辑我的帖子并给出正确的答案,很抱歉错过了我像蝙蝠一样盲目。
  • 是吗?这个网站上一半的问题可以用 5 分钟的时间和Google 找到。人们仍然一直为那些获得代表。
  • 别太认真,免费的。我只是在和你开玩笑,因为我同时输入了与评论基本相同的内容。一切都很好。
  • 嘿,不,GetValue 或 Getint32 有同样的问题
  • @Graham:试试另一个GetStrings。似乎其中之一肯定会导致问题。
【解决方案2】:

wallPosting 是一个 int,而您正在使用 .GetString。您可能应该使用 .GetInt32。

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    相关资源
    最近更新 更多