-3

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

    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();
            }
        }              
    }

运行时出现此错误:

错误

为什么我会收到此错误?

4

3 回答 3

1
string ss = "SElECT * FROM [123] WHERE u=@USERNAME";
于 2014-10-25T06:39:14.483 回答
1

如下更改您的 SQL 语句

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

ExecuteScalar 将为您提供第一行第一列的值。如果这不是整数值,则在转换为 int 时会出现异常。包含Count(*)在您的 sql 中,它将为您提供与您的条件相匹配的记录数,并且投射也将起作用。请注意,我也为表名添加了 []。

于 2014-10-25T06:40:44.290 回答
0

FROM 123是不正确的。您需要在此处输入表的名称。

于 2014-10-25T06:37:07.857 回答