C#调用mysql查询存储过程

废话不多说,最近做了一个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>


到这里就介绍完了,希望对你有用。



  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值