您的位置:首页 > 数据库 > MySQL

C#调用mysql查询存储过程

2015-10-22 22:11 585 查看
废话不多说,最近做了一个mysql的查询的存储过程,现在主要给大家看的是dao部分和存储过程的生成和使用,其他部分不太重要。

首先先看表,主要有两张表,一张是订单表,一张是车票表,两者是一对多的关系,通过orderId关联。



再看的是存储过程的生成,新建一个查询,不然每次更改都打一遍很麻烦,其实主要目的是生成函数,生成的函数才是我们真正调用来执行的。该查询是生成一个输入参数为peoplePhoneNumber, String类型的函数。



生成函数后是这样的。





有了函数,我们就要进行调试了。还是新建一个查询来调试。



=========以上是数据库层的测试==============

现在要说的是c#编写的dao,在编写前需要引用MySql.Data.dll ,可在网上下载。

public DataSet execution(string procedureName, IDictionary<string, string> Parameters)
{
MySqlConnection sqlConnection = this.getmysqlcon();

MySqlCommand mysqlcom = new MySqlCommand(procedureName, sqlConnection);
mysqlcom.CommandType = CommandType.StoredProcedure;//设置调用的类型为存储过程
DataSet ds = new DataSet();
MySqlDataAdapter adapter = new MySqlDataAdapter();

if (Parameters == null)
{
return null;
}
foreach(string k in Parameters.Keys)
{
mysqlcom.Parameters.Add(k, MySqlDbType.VarChar, 20).Value = Parameters[k];
}

sqlConnection.Open();//打开数据库连接
mysqlcom.ExecuteNonQuery();
adapter.SelectCommand = mysqlcom;
adapter.Fill(ds, procedureName);
mysqlcom.Dispose();
sqlConnection.Close();
sqlConnection.Dispose();
return ds;

}
public  MySqlConnection getmysqlcon()
        {
            string M_str_sqlcon = ConfigurationManager.ConnectionStrings["MySqlServer"].ConnectionString.ToString();//获取Web.config中的连接字符串
            MySqlConnection myCon = new MySqlConnection(M_str_sqlcon);
            return myCon;
        }
}


以上代码关键在
1. mysqlcom.CommandType = CommandType.StoredProcedure;//设置调用的类型为存储过程

2. IDictionary<string, string> Parameters//我用dictionary来存储参数,但是有缺点,因为可以看到注入参数的格式是

mysqlcom.Parameters.Add(k, MySqlDbType.VarChar, 20).Value = Parameters[k]; //分别是参数名,参数类型,长度和参数值,所以单纯靠dictionary来存储参数是不够用的,这里取巧地把所以参数类型和长度都定为<span style="font-family: Arial, Helvetica, sans-serif;">MySqlDbType.VarChar, 20</span>


到这里就介绍完了,希望对你有用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: