我正在尝试从mysql 2008数据库导入一个字段。 我写了这个小代码(我几次使用过) - 它一直给我这个服务器错误:
列'Previous Login'不属于表Table。
第47行:DateTime userEntry = Convert.ToDateTime(ds1.Tables [0] .Rows [0] [“Previous Login”]);
但确实存在!当我使用相同的查询insql服务器管理它工作正常所以我猜回报数据是好的,任何想法我哪里出错?
谢谢!
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "server=(local);database=PhilipsMaterials;Integrated Security=SSPI;";
con.Open();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
// SQL Query that returns only the messages from the last 2 weeks starting with the most recent one.
string sql = "Select * From Messages Where DATEDIFF(DAY,Date,GETDATE()) <= 14 ORDER BY Date Desc";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(ds);
dt = ds.Tables[0];
showMsgs.DataSource = ds;
showMsgs.DataBind();
// new message notification
string username = Convert.ToString(Session["username"]);
username = username.Substring(username.IndexOf("\\") + 1);
DataSet ds1 = new DataSet();
DataTable dt1 = new DataTable();
string sqluser = "Select * From [PhilipsMaterials].[dbo].[Employees] Where username='" + username + "'";
SqlDataAdapter da1 = new SqlDataAdapter(sqluser, con);
da.Fill(ds1);
dt1 = ds1.Tables[0];
DateTime userEntry = Convert.ToDateTime(ds1.Tables[0].Rows[0]["Previous Login"]);
DateTime lastMsg = new DateTime();
lastMsg = Convert.ToDateTime(ds.Tables[0].Rows[0]["Date"]);
int compared = DateTime.Compare(userEntry, lastMsg);
if (compared < 0) { notification.Visible = true; }
con.Close();
}
答案 0 :(得分:1)
如果列名包含空格,则需要进行某种转义 - 尝试使用[Previous Login]
作为列名,就像在SQL语句中一样。
并且 - 正如问题评论中所述 - 看看SQL injection and how to avoid it。