我使用在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(), "");
}
}
答案 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