“解析查询时出错。”

时间:2014-10-25 06:32:41

标签: c# sql executescalar

我有以下代码来检查用户:

    private void button1_Click(object sender, EventArgs e)
    {

        string ss = "SElECT * FROM 123 WHERE u=@USERNAME";
        using (SqlCeConnection cn = new SqlCeConnection(@"Data Source=|DataDirectory|\123.sdf"))       
        {
            try
            {
                SqlCeCommand selectCommand = new SqlCeCommand(ss, cn);
                cn.Open();

                selectCommand.Parameters.AddWithValue("@USERNAME", textBox1.Text);

                int result = (int) selectCommand.ExecuteScalar();
                if (result > 0)
                    MessageBox.Show("logged in");
                else
                    MessageBox.Show("user not found");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                cn.Close();
            }
        }              
    }

运行时出现此错误:

Error

为什么我收到此错误?

3 个答案:

答案 0 :(得分:1)

string ss = "SElECT * FROM [123] WHERE u=@USERNAME";

答案 1 :(得分:1)

更改您的SQL语句,如下所示

string ss = "SElECT Count(*) FROM [123] WHERE u=@USERNAME";

ExecuteScalar将为您提供第一行第一列的值。如果它不是整数值,则在转换为int时会出现异常。在你的sql中包含Count(*),它将为你提供符合你条件的记录数量,同时也可以投射。请注意,我也为表名添加了[]。

答案 2 :(得分:0)

FROM 123不正确。你需要这里的表名。