列不存在服务器错误 - 但SQL服务器管理说它确实存在

时间:2013-01-07 19:41:42

标签: c# asp.net mysql sql datatable

我正在尝试从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();
} 

1 个答案:

答案 0 :(得分:1)

如果列名包含空格,则需要进行某种转义 - 尝试使用[Previous Login]作为列名,就像在SQL语句中一样。

并且 - 正如问题评论中所述 - 看看SQL injection and how to avoid it