【问题标题】:Load MySql Data From Database into TextBox in WPF with stored procedure使用存储过程将数据库中的 MySql 数据加载到 WPF 中的 TextBox 中
【发布时间】:2021-02-17 23:29:28
【问题描述】:

感谢阅读

我想使用 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

再次感谢您!!!

【问题讨论】:

  • 您的 SP 似乎是错误的 - 我怀疑 ID_ID 都是 mi 表中的列。
  • ID 是具有唯一值的未更改的自动生成索引列,_ID 是我的 c# 代码中的初始化程序,而 mi 显然是 table ,但这里我使用 Member number 或 memno 作为索引而不是 ID
  • _ID 是我的 c# 代码中的 Initializer MySQL 对 c# 代码中存在的实体一无所知。如果您想在查询中使用它的值,您必须将此值作为参数传输到 SP。并且这个参数必须在SP参数列表中描述。
  • 是的,但我希望发生完全相反的情况,C# 不知道 MySQL 表中的实体,所以有没有办法发生这种情况,MySQL 表中有值,我希望 c#根据存储过程获取值,如果让我感到困惑,我深表歉意我是这个开发领域的新手,感谢您与我交流
  • C# 命令,MySQL 执行。 C# 必须明确告诉 MySQL 它必须做什么。它可以告诉“给我一行ID 是 123”并接收该行(如果存在),或者它可以告诉give me all rows,接收所有行并搜索它们感兴趣的值。 MySQL -简单地执行命令。

标签: c# mysql wpf stored-procedures textbox


【解决方案1】:

没关系,我想通了,但是谢谢你甚至帮助我 这就是我要找的东西

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();
            }
        }
    }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2016-05-07
    相关资源
    最近更新 更多