如何使用Compact SQL命令查询返回值?

时间:2015-08-12 13:39:52

标签: c# sql .net winforms

我使用在visual studio上创建的紧凑数据库。只是为了一个独立的系统,它的数据库已经完好无损,虽然我在这里使用了一个select查询,如果用户存在于数据库中,它可以检索一个布尔值,如果用户条目存在则返回它的ID和用户名。我是否可以就此问题寻求帮助..我是一名学生,正在尝试使用紧凑型数据库学习c#。

private void btnLogin_Click(object sender, EventArgs e)
    {
        try
        {
            if (!IsEmpty()) 
            {
                if (!IsLenght()) 
                {
                    using (SqlCeConnection con = new SqlCeConnection("Data Source=" +
                    System.IO.Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "INCdb.sdf"))) 
                    {
                        con.Open();
                        SqlCeCommand cmd = con.CreateCommand();
                        cmd.CommandText = "SELECT * FROM LoginTB Where username=@user1 AND password=@pass1";
                        cmd.Parameters.AddWithValue("@user1", UserTxt.Text.Trim());
                        cmd.Parameters.AddWithValue("@pass1", PassTxt.Text.Trim());
                        cmd.CommandType = CommandType.Text;

                        validlogin = (bool)cmd.ExecuteScalar();
                        con.Close();
                        MessageBox.Show(validlogin.ToString());


                        if (validlogin == true) 
                        {
                            // cmd. return value ID
                            // cmd. return value Username
                            //SysMain Mn = new SysMain();
                            //Mn.ShowDialog();
                            //this.Hide();
                        }
                    }                        
                }
            }
        }
        catch (Exception ex) 
        {
            gbf.msgBox(1, ex.Message.ToString(), "");
        }
    }

1 个答案:

答案 0 :(得分:1)

下面的代码可能更好,除非LoginTB的架构有一些特殊且未陈述的内容。

// ...
var validLogin = false;
using (SqlCeConnection con = new SqlCeConnection(
    "Data Source=" +
        System.IO.Path.Combine(
            Path.GetDirectoryName(
                System.Reflection.Assembly.GetEntryAssembly().Location),
    "INCdb.sdf"))) 
{
    con.Open();
    SqlCeCommand cmd = con.CreateCommand();
    cmd.CommandText =
            "SELECT COUNT(*) FROM LoginTB Where username=@user1 AND password=@pass1";
    cmd.Parameters.AddWithValue("@user1", UserTxt.Text.Trim());
    cmd.Parameters.AddWithValue("@pass1", PassTxt.Text.Trim());
    cmd.CommandType = CommandType.Text;
    validlogin = ((int)cmd.ExecuteScalar()) > 0;
}

MessageBox.Show(validlogin.ToString());

// ...

请注意COUNT

的使用