C#调用mysql查询存储过程
2015-10-22 22:11
585 查看
废话不多说,最近做了一个mysql的查询的存储过程,现在主要给大家看的是dao部分和存储过程的生成和使用,其他部分不太重要。
首先先看表,主要有两张表,一张是订单表,一张是车票表,两者是一对多的关系,通过orderId关联。
再看的是存储过程的生成,新建一个查询,不然每次更改都打一遍很麻烦,其实主要目的是生成函数,生成的函数才是我们真正调用来执行的。该查询是生成一个输入参数为peoplePhoneNumber, String类型的函数。
生成函数后是这样的。
有了函数,我们就要进行调试了。还是新建一个查询来调试。
=========以上是数据库层的测试==============
现在要说的是c#编写的dao,在编写前需要引用MySql.Data.dll ,可在网上下载。
以上代码关键在
1. mysqlcom.CommandType = CommandType.StoredProcedure;//设置调用的类型为存储过程
2. IDictionary<string, string> Parameters//我用dictionary来存储参数,但是有缺点,因为可以看到注入参数的格式是
到这里就介绍完了,希望对你有用。
首先先看表,主要有两张表,一张是订单表,一张是车票表,两者是一对多的关系,通过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>
到这里就介绍完了,希望对你有用。
相关文章推荐
- 关于MySQL的dos客户端中文插入和显示utf-8乱码的解决方法
- MySQL 5.6 主从复制如何处理——触发器,函数,存储过程,调度事件
- 关于MySQL中的left join、on、where的一点深入
- Mysql中存在索引但是不能使用索引的典型情况
- mysql in 排序 也可以按in里面的顺序来排序
- Mysql的Bin log数据恢复:不小心删除数据库
- MySQL DISTINCT优化
- Win7_64位使用32位Mysql配置Mysql Odbc
- Excel表格数据导入mysql数据库中
- mysql抢单
- 2015.10.22小结Mysql中文乱码问题完美解决方案(包括建库、导入数据、网页)
- 【未完】mysqldump数据备份和增量备份
- 改写的两个mysql存储过程,用于判断主键外键
- MySQL 触发器
- Mysql没有初始密码(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO))
- mysql树
- ubuntu14.04 下 mysql 存储目录迁移
- 解决mysql slave同步问题
- mysql event 事件
- 【转】MySQL随机字符串生成