2

コードで単純なSQLステートメントを取得しようとすると、が取得されますが、DataTable何らかの理由でこの奇妙な例外が発生します。

列名が無効です

これは私のコードです:

public DataTable GetAllVideoID(string stringId)
    {
        dt = new DataTable();
        dataObj = new DataObj();
        sql = "SELECT * FROM TBL_VIDEOS WHERE TBL_VIDEOS.ID=" + stringId;

        return dt = dataObj.SelectDataTable(sql);
    }

public DataTable SelectDataTable(string sql)
    {
        try
        {
            conn = new SqlConnection(conString);
            conn.Open();
            adapter = new SqlDataAdapter(sql, conn);

            dt = new DataTable();

            adapter.Fill(dt);



            return dt;
        }
        catch (Exception e)
        {

            throw e;
        }
        finally { conn.Close(); }

    }

これを管理ツールで実行すると、statemnetだけで完全に機能します。だから私は知らない..

DBの構造:ID、TITLE、V_DESCIPTION、UPLOAD_DATE、V_VIEW、USERNAME、RATING、V_SOURCE、FLAG

ありがとう :)

4

2 に答える 2

5

SQLをに変更する

sql = "SELECT * FROM TBL_VIDEOS WHERE TBL_VIDEOS.ID='" + stringId+"'";

これを修正できます。これにより、stringIdの値を一重引用符で囲みます。.ID = '10'

stringId ='user'の場合、クエリは次のようになります。

 sql = "SELECT * FROM TBL_VIDEOS WHERE TBL_VIDEOS.ID=user
 instead of
 sql = "SELECT * FROM TBL_VIDEOS WHERE TBL_VIDEOS.ID = 'user'

ただし、userはSQLの有効な変数ではないため、無効な列名を取得します

于 2012-07-20T21:55:49.400 に答える
0

あなたのSelectDataTable方法は絶対に問題ありません。私の頭に浮かぶ唯一のことは、これを置き換えることです:

sql = "SELECT * FROM TBL_VIDEOS WHERE TBL_VIDEOS.ID=" + stringId;

sql = string.Format("SELECT * FROM TBL_VIDEOS WHERE TBL_VIDEOS.ID 
        = '{0}'", stringId);
于 2012-07-20T23:20:52.193 に答える