首页 > 解决方案 > 使用存储过程将数据库中的 MySql 数据加载到 WPF 中的 TextBox 中

问题描述

谢谢阅读

我想使用 MySQL 中的存储过程将 MySql 数据库中的数据显示到 WPF 文本框中,我想在按键事件的文本框中显示信息,“vbid”是 MySQL 中的存储过程,如下所示,我在问这个因为存储过程中的列数很长,这只是我临时解决的一个示例,我知道有一种方法可以在 c# 中使用 SQL 命令并使用它们的索引号示例引用每个:

MySqlCommand cmd = new MySqlCommand("Select Name , Age etc... From exampletable where ID=@ID", con); 
cmd.Parameters.AddWithValue("_Mem_no", memno.Text.Trim());
MySqlDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    textbox1.Text = dr.GetValue(0).ToString();
                    textbox1.Text = dr.GetValue(1).ToString();
                    ........
                }

但我想要一种利用存储过程的方法,有什么办法可以做到这一点,请帮忙,谢谢!

这些是我尝试实现的两种方法:

 private void memno_KeyUp(object sender, KeyEventArgs e)
    {

        using (MySqlConnection con = new MySqlConnection(connetionstring))
        {
            con.Open();
            if (memno.Text != "") 
            {
                MySqlCommand cmd = new MySqlCommand("vbid", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("_Mem_no", memno.Text.Trim());
                MySqlDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    // this is the only different part so I am writing this in different code fence 
                       so that the question isn't too long, I will name them method 1 and method 2 
                       as their title 
                }

                con.Close();
            }
        }
    }

    Method 1 :      memnm.Text = Request.QueryString["Mem_Name"];
                    fsn.Text = Request.QueryString["Father_Name"];
                    age.Text = Request.QueryString["Age"];
                    gndr.Text = Request.QueryString["Gender"];
                    dob.Text = Request.QueryString["Date_of_Birth"];
                    unm.Text = Request.QueryString["Union_name"];



Method 2 :          memnm.Text = dr["Mem_Name"].ToString();
                    fsn.Text = dr["Father_Name"].ToString();
                    age.Text = dr["Age"].ToString();
                    gndr.Text = dr["Gender"].ToString();
                    dob.Text = dr["Date_of_Birth"].ToString();
                    unm.Text = dr["Union_name"].ToString();

这是 MySql 中名为“vbid”的示例存储过程

 CREATE DEFINER=`root`@`localhost` PROCEDURE `vbid`()
 BEGIN
 SELECT   
 Mem_no,
 Mem_Name,
 Father_Name,
 Age,
 Gender,
 Date_of_Birth,
 Union_name
  
 FROM mi
  
 WHERE ID = _ID; 
 END

再次感谢你!!!

标签: c#mysqlwpfstored-procedurestextbox

解决方案


没关系,我想通了,但是谢谢你甚至帮助我这是我正在寻找的

private void memno_KeyUp(object sender, KeyEventArgs e)
    {

        using (MySqlConnection con = new MySqlConnection(connetionstring))
        {
          con.Open();
          if (memno.Text != "") 
           {
            MySqlCommand cmd = new MySqlCommand("SELECT * FROM ch.mi WHERE Mem_no =" + 
            int.Parse(memno.Text.Trim()), con);
            MySqlDataReader dr = cmd.ExecuteReader();

                if (dr.Read())
                {
                    memnm.Text = dr.GetString("Mem_Name"); <--- this was the command I 
                    fsn.Text = dr.GetString("Father_Name");     was searching for 
                    age.Text = dr.GetInt32("Age").ToString();  *(pheww sigh of relief) 
                    gndr.Text = dr.GetString("Gender");
                    dob.Text = dr.GetString("Date_of_Birth");
                    unm.Text = dr.GetString("Union_name");
                }
                else 
                {
                    clear();  <--- this is a declared clear function 
                    MessageBox.Show("Data Not Available");
                
                }
                con.Close();
            }
        }
    }

现在令人恼火的是我有一个新问题,这个命令不能接受空值我真的很讨厌这个一个又一个问题,但真的感谢这个社区


推荐阅读