2

我正在尝试创建一个允许用户使用 .sdf 登录的应用程序,互联网上没有太多关于此的内容!

真的可以用一些指针来做。

这是我目前拥有的,但我相信这是一堆乱七八糟的东西,因为无论我在每个文本框中输入什么内容,它都会将我重定向到Form2(这是意料之中的)。我知道我在某处需要一个 if 语句,但不确定如何实现:

  private void Login_Click(object sender, EventArgs e)
  {
     using (SqlCeConnection yourConnection = new SqlCeConnection("Data Source=C:\\Users\\Username\\Documents\\Databases\\New Folder\\Login.sdf"))
     {
          string query = "SELECT * FROM tbl_employees where Username like '" + textBox1.Text + "' AND Password like '" + textBox2.Text +"'";
          SqlCeDataAdapter dA = new SqlCeDataAdapter(query, yourConnection);
          SqlCeCommandBuilder cBuilder = new SqlCeCommandBuilder(dA);

          this.Hide();
          Form2 secondForm = new Form2();
          secondForm.ShowDialog();
     }
 }      
4

2 回答 2

1

首先,SQL Server CE 数据库ie.sdf文件只是另一个存储文件。它是非常轻巧且可移植的 SQL Server 版本。

但是,您的代码和逻辑最多与 SQL Server 的代码和逻辑相似。只是班级不同。即SqlCeConnectionSqlCeCommand等等。

现在您需要验证您的connectionString是否正确。

string connectionString ="data source=physical path to .sdf file; 
                         password=pwdThtUSet; persist security info=True";

using (SqlCeConnection yourConnection = new SqlCeConnection(connectionString))
{
       ....your logic
}

现在,在您的查询中搜索用户名和密码组合匹配行,不要这样做,like因为您需要完全匹配。

所以这样做:

     string query = "SELECT * FROM tbl_employees where Username ='" + textBox1.Text + "' AND Password ='" + textBox2.Text +"'";
      SqlCeDataAdapter dA = new SqlCeDataAdapter(query, yourConnection);
      DataTable dt = new DataTable();
      dA.Fill(dt);

      if(dt.Rows.Count>0)
      {
          this.Hide();
          Form2 secondForm = new Form2();
          secondForm.ShowDialog();
      }
于 2013-03-24T22:02:54.970 回答
0

仅在满足登录条件后尝试此操作:

if (usernametextbox.Text.Equals("form2username", StringComparison.InvariantCultureIgnoreCase)) {
  // code for redirection to form2
  Hide();
  con.Close();
} else {
  if (usernametextbox.Text.Equals("form3username", StringComparison.InvariantCultureIgnoreCase)) {
    // code for redirection to form3
    Hide();
    con.Close();
  }
}
于 2017-03-12T12:59:52.713 回答