假设它是一个Access数据库(如果没有,则进行必要的更改):
使用适配器将结果填充到表格中。然后将行列与用户提供的信息进行比较。不要忘记使用参数来避免可能会破坏您的数据库或将您的用户信息暴露给黑客的注入。
DataTable dt = new DataTable();String sql = "SELECt * FROM users WHERe user = @user and password=@password"OleDbConnection connection = getAccessConnection();OleDbDataAdapter da = new OleDbDataAdapter(sql, connection);da.SelectCommand.Parameters.Add("@user", OleDbType.VarChar).Value = userNameText;da.SelectCommand.Parameters.Add("@password", OleDbType.VarChar).Value = password.Text;try{ connection.Open(); da.Fill(dt); connection.Close();}catch(OleDbException ex){ connection.Close(); MessageBox.Show(ex.ToString());}if(dt.Rows.Count == 1) return true; //username && password matcheselse if(dt.Rows.Count == 0) return false; // does not match
您也可以使用AddWithValue作为参数。
da.SelectCommand.Parameters.AddWithValue("@user", userNameText);
getAccessConnection()是预定义的OleDbConnection函数,具有与数据库设置的连接,并为您(我为自己创建的)创建连接的新实例。
public OleDbConnection getAccessConnection(){ this.connection = new OleDbConnection(); this.connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Classified.SOURCE + ";Jet OLEDB:Database Password=" + Classified.PASS + ";"; return this.connection;}
对于可能加入该项目的开发人员,最好为所有这些功能创建类。还请阅读有关C#测试驱动的开发的文章。
同样,即使该一条记录失败,您的循环也会中断,仅允许其转到第一条记录。
创建自己的数据集并用查询表填充数据集也很有用。这是一个简单的示例:
DataSet ds = new DataSet();ds.Tables.Add(dt, "userSearchedTable");ds.Tables["userSearchedTable"].Rows[0][1].ToString();
然后,您可以在需要时在集合中声明特定的数据表。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)