【问题标题】:Retrieving data from database in WPF Desktop application从 WPF 桌面应用程序中的数据库中检索数据
【发布时间】:2018-08-21 06:42:05
【问题描述】:

我是 C# 新手,我刚刚学会了如何在我的 WPF 应用程序中将数据输入到 database.mdf 的数据表中。

这是通过以下代码完成的

SqlConnection sqlCon = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;");
try
{
    if (sqlCon.State == ConnectionState.Closed)
        sqlCon.Open();
    String query = "SELECT COUNT(1) FROM tbl WHERE Username=@Username and Password=@Password";
    SqlCommand sqlCmd = new SqlCommand(query, sqlCon);
    sqlCmd.CommandType = CommandType.Text;
    sqlCmd.Parameters.AddWithValue("@Username", txtbxUsername.Text);
    sqlCmd.Parameters.AddWithValue("@Password", pswbxPassword.Password);
    int count = Convert.ToInt32(sqlCmd.ExecuteScalar());
    if (count == 1)
    {
        MessageBox.Show("Login successfully!");

        DetailPage newpage = new DetailPage();
        newpage.Show();
        this.Close();
    }
    else
    {
        MessageBox.Show("Username or password is incorrect");
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
finally
{
    sqlCon.Close();
}

目前通过登录页面登录后,有一个详细信息页面,我想在其中显示以前保存在我的数据库中的名字、姓氏、年龄等详细信息。请问我可以使用哪些 SqlCommands 从数据库中检索所有这些参数数据?

【问题讨论】:

    标签: c# sql sqlite


    【解决方案1】:

    在你的位置,我会在我的应用程序中添加一个用户类

    public class user
    {
        public int ID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string MailAddress{ get; set; }
    }
    
    
    //You can keep your Logged user in a static class
    
    
    public static class PublicParameters
    { 
      public static User CurrentUser;
    
      //Define only one connection string in your application.
      public static string ConnectionString= @"Data Source=   (LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated 
     Security=True;"
    }
    
    
    
    
        void Login()
        {
            using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
            {
                using (SqlCommand sqlComm = new SqlCommand("SELECT COUNT(1) FROM tbl WHERE Username=@Username AND Password=@Password", sqlConn))
                {
                    if (sqlComm.Connection.State == System.Data.ConnectionState.Closed)
                        sqlComm.Connection.Open();
                    SqlDataReader sqlRd = sqlComm.ExecuteReader();
                    sqlComm.Parameters.AddWithValue("@Username", txtbxUsername.Text);
                    sqlComm.Parameters.AddWithValue("@Password", pswbxPassword.Password);
    
                    //Your username column must be unique
                    while (sqlRd.Read())
                    {
                        PublicParameters.CurrentUser = new Controllers.User();
                        PublicParameters.CurrentUser.FirstName = sqlRd["FirstName"].ToString();
                        PublicParameters.CurrentUser.LastName = sqlRd["LastName"].ToString();
                        PublicParameters.CurrentUser.MailAddress = sqlRd["MailAddress"].ToString();
                        //And other properties to assign
                    }
    
                    if(PublicParameters.CurrentUser != null)
                    {
                        MessageBox.Show("Login successfully!");
                        //Yo have your logged user 
                    }
                    else
                    {
                        MessageBox.Show("Username or password is incorrect");
                    }
                }
            }
        }
    

    【讨论】:

    • 谢谢,请问您是在哪里定义 CurrentUser 的?
    • 他没有发布完整的代码,但我猜 Controllers 是他的命名空间,而 CurrentUser 只是用户的一个实例(顶部定义的类)。
    • 在你的地方,我会在我的项目中添加一个公共静态类。在此类(例如名为 PublicParameters 的类)中,我将在此类中定义一个公共静态用户对象。您可以在任何引用您的公共参数类的类中调用此对象,方法是使用 PublicParameters;
    • 谢谢,我尝试这样做,但是他们在 SqlDataReader sqlRd = sqlCmdExecute.Reader 行给了我一个错误异常附加信息:关键字'FROM'附近的语法不正确这有什么问题吗?跨度>
    • 是的,我的选择命令不完整!抱歉 :) SELECT COUNT(1) FROM TABLE ... 会更好:)
    猜你喜欢
    • 2011-07-25
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多