tho*_*yer 2 sql-server ado.net
我试图在我的代码中获得一个简单的 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(); }
}
Run Code Online (Sandbox Code Playgroud)
当我在我的管理工具上运行它时,只是 statemnet - 它完美地工作。所以我不知道..
我的数据库结构:ID、TITLE、V_DESCIPTION、UPLOAD_DATE、V_VIEW、USERNAME、RATING、V_SOURCE、FLAG
谢谢 :)
将您的 sql 更改为
sql = "SELECT * FROM TBL_VIDEOS WHERE TBL_VIDEOS.ID='" + stringId+"'";
Run Code Online (Sandbox Code Playgroud)
可以解决这个问题。这会在 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'
Run Code Online (Sandbox Code Playgroud)
但是 user 不是 sql 中的有效变量,因此您会得到无效的列名