【发布时间】: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