C# 如何调用和获取数据表单存储过程?
请告诉我如何打电话从存储过程中获取数据C# 如何调用和获取数据表单存储过程?,c#,stored-procedures,C#,Stored Procedures,请告诉我如何打电话从存储过程中获取数据 private void GetPatient(string sPatient) { string connString = "Server = XXX.X.X.XXX; Database = XXX; UID = XXXX; Password = XXXX"; MySqlConnection conn = new MySqlConnection(connString); MySqlCommand c
private void GetPatient(string sPatient)
{
string connString = "Server = XXX.X.X.XXX; Database = XXX; UID = XXXX; Password = XXXX";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand cmd;
MySqlDataAdapter da;
DataTable dt = new DataTable();
cmd = new MySqlCommand("getPerson_Search", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@sPatient", sPatient);
cmd.Parameters.Add("@tFullName", MySqlDbType.VarChar, 64);
cmd.Parameters["@tFullName"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("@tHN", MySqlDbType.VarChar, 9);
cmd.Parameters["@tHN"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("@tCid", MySqlDbType.VarChar, 13);
cmd.Parameters["@tCid"].Direction = ParameterDirection.Output;
da = new MySqlDataAdapter(cmd);
try
{
conn.Open();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.DataBinding();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ข้อผิดพลาด");
}
finally
{
conn.Close();
}
return "OK.";
}
大体上,你的思路是正确的。有一些生成错误正在阻止您,例如尝试从需要修复的
void
方法返回string
,但这与问题无关。您拥有ADO.NET的大部分功能。有一些“NIT”,例如在一次性物品周围使用和命令(conn
,cmd
,等等)
请注意,@tFullName
似乎不是由SQL填充的,因此我怀疑该参数是否会像您预期的那样工作。看起来您将列看作是out参数,在这种情况下:您根本不需要这些参数。列通过数据适配器正在使用的数据读取器返回。坦率地说,我反对在大多数场景中使用DataTable
(主要的例外是模式无法合理知道的即席报告查询),而改为使用列表
模型(或类似)。有像“dapper”这样的工具可以帮助您实现这一点,使您的代码类似于:
using(var conn = new MySqlConnection(connString))
{
var people = conn.Query<Person>("getPerson_Search", new { sPatient },
commandType: CommandType.StoredProcedure).AsList();
peopleGrid.DataSource = people;
}
使用(var conn=new MySqlConnection(connString))
{
var people=conn.Query(“getPerson\u Search”,new{sPatient},
commandType:commandType.StoredProcess).AsList();
peopleGrid.DataSource=人;
}
(其中classperson
的属性与查询中的列相匹配)我怀疑您的程序是否正在编译。您正在从void
函数返回一个字符串。“存在生成错误”-那么:首先修复这些错误?在编译之前什么都不会起作用;第二个似乎与此相关,但其余的都无关