1 usingSystem;2 usingSystem.Data;3 usingSystem.Configuration;4 usingSystem.Collections.Generic;5 usingSystem.Linq;6 usingSystem.Text;7 usingSystem.Xml.Linq;8 usingMySql.Data;9 usingMySql.Data.MySqlClient;10 namespaceXX.DAL11 {12 public abstract classMySqlHelper13 {14 //数据库连接字符串
15 public static string Conn = "Database='device_manage';Data Source='localhost';User Id='root';Password='123456';charset='utf8';pooling=true;Allow Zero Datetime=True";16
17 ///
18 ///给定连接的数据库用假设参数执行一个sql命令(不返回数据集)19 ///
20 /// 一个有效的连接字符串
21 /// 命令类型(存储过程, 文本, 等等)
22 /// 存储过程名称或者sql命令语句
23 /// 执行命令所用参数的集合
24 /// 执行命令所影响的行数
25 public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, paramsMySqlParameter[] commandParameters)26 {27 MySqlCommand cmd = newMySqlCommand();28 using (MySqlConnection conn = newMySqlConnection(connectionString))29 {30 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);31 int val =cmd.ExecuteNonQuery();32 cmd.Parameters.Clear();33 returnval;34 }35 }36
37 ///
38 ///用现有的数据库连接执行一个sql命令(不返回数据集)39 ///
40 /// 一个现有的数据库连接
41 /// 命令类型(存储过程, 文本, 等等)
42 /// 存储过程名称或者sql命令语句
43 /// 执行命令所用参数的集合
44 /// 执行命令所影响的行数
45 public static int ExecuteNonQuery(MySqlConnection connection, CommandType cmdType, string cmdText, paramsMySqlParameter[] commandParameters)46 {47 MySqlCommand cmd = newMySqlCommand();48 PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);49 int val =cmd.ExecuteNonQuery();50 cmd.Parameters.Clear();51 returnval;52 }53
54 ///
55 ///使用现有的SQL事务执行一个sql命令(不返回数据集)56 ///
57 ///
58 ///举例:59 ///int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));60 ///
61 /// 一个现有的事务
62 /// 命令类型(存储过程, 文本, 等等)
63 /// 存储过程名称或者sql命令语句
64 /// 执行命令所用参数的集合
65 /// 执行命令所影响的行数
66 public static int ExecuteNonQuery(MySqlTransaction trans, CommandType cmdType, string cmdText, paramsMySqlParameter[] commandParameters)67 {68 MySqlCommand cmd = newMySqlCommand();69 PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);70 int val =cmd.ExecuteNonQuery();71 cmd.Parameters.Clear();72 returnval;73 }74
75 ///
76 ///用执行的数据库连接执行一个返回数据集的sql命令77 ///
78 ///
79 ///举例:80 ///MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));81 ///
82 /// 一个有效的连接字符串
83 /// 命令类型(存储过程, 文本, 等等)
84 /// 存储过程名称或者sql命令语句
85 /// 执行命令所用参数的集合
86 /// 包含结果的读取器
87 public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, paramsMySqlParameter[] commandParameters)88 {89 //创建一个MySqlCommand对象
90 MySqlCommand cmd = newMySqlCommand();91 //创建一个MySqlConnection对象
92 MySqlConnection conn = newMySqlConnection(connectionString);93 //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,94 //因此commandBehaviour.CloseConnection 就不会执行
95 try
96 {97 //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
98 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);99 //调用 MySqlCommand 的 ExecuteReader 方法
100 MySqlDataReader reader =cmd.ExecuteReader(CommandBehavior.CloseConnection);101 //清除参数
102 cmd.Parameters.Clear();103 returnreader;104 }105 catch
106 {107 //关闭连接,抛出异常
108 conn.Close();109 throw;110 }111 }112
113 ///
114 ///返回DataSet115 ///
116 /// 一个有效的连接字符串
117 /// 命令类型(存储过程, 文本, 等等)
118 /// 存储过程名称或者sql命令语句
119 /// 执行命令所用参数的集合
120 ///
121 public static DataSet GetDataSet(string connectionString, CommandType cmdType, string cmdText, paramsMySqlParameter[] commandParameters)122 {123 //创建一个MySqlCommand对象
124 MySqlCommand cmd = newMySqlCommand();125 //创建一个MySqlConnection对象
126 MySqlConnection conn = newMySqlConnection(connectionString);127 //在这里我们用一个try/catch结构执行sql文本命令/存储过程,128 //因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,
129 try
130 {131 //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
132 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);133 //调用 MySqlCommand 的 ExecuteReader 方法
134 MySqlDataAdapter adapter = newMySqlDataAdapter();135 adapter.SelectCommand =cmd;136 DataSet ds = newDataSet();137 adapter.Fill(ds);138 //清除参数
139 cmd.Parameters.Clear();140 conn.Close();141 returnds;142 }143 catch(Exception e)144 {145 throwe;146 }147 }148
149 ///
150 ///用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列151 ///
152 ///
153 ///例如:154 ///Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));155 ///
156 ///一个有效的连接字符串
157 /// 命令类型(存储过程, 文本, 等等)
158 /// 存储过程名称或者sql命令语句
159 /// 执行命令所用参数的集合
160 /// 用 Convert.To{Type}把类型转换为想要的
161 public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, paramsMySqlParameter[] commandParameters)162 {163 MySqlCommand cmd = newMySqlCommand();164 using (MySqlConnection connection = newMySqlConnection(connectionString))165 {166 PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);167 object val =cmd.ExecuteScalar();168 cmd.Parameters.Clear();169 returnval;170 }171 }172
173 ///
174 ///用指定的数据库连接执行一个命令并返回一个数据集的第一列175 ///
176 ///
177 ///例如:178 ///Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));179 ///
180 /// 一个存在的数据库连接
181 /// 命令类型(存储过程, 文本, 等等)
182 /// 存储过程名称或者sql命令语句
183 /// 执行命令所用参数的集合
184 /// 用 Convert.To{Type}把类型转换为想要的
185 public static object ExecuteScalar(MySqlConnection connection, CommandType cmdType, string cmdText, paramsMySqlParameter[] commandParameters)186 {187 MySqlCommand cmd = newMySqlCommand();188 PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);189 object val =cmd.ExecuteScalar();190 cmd.Parameters.Clear();191 returnval;192 }193
194 ///
195 ///准备执行一个命令196 ///
197 /// sql命令
198 /// OleDb连接
199 /// OleDb事务
200 /// 命令类型例如 存储过程或者文本
201 /// 命令文本,例如:Select * from Products
202 /// 执行命令的参数
203 private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, stringcmdText, MySqlParameter[] cmdParms)204 {205 if (conn.State !=ConnectionState.Open)206 conn.Open();207 cmd.Connection =conn;208 cmd.CommandText =cmdText;209 if (trans != null)210 cmd.Transaction =trans;211 cmd.CommandType =cmdType;212 if (cmdParms != null)213 {214 foreach (MySqlParameter parm incmdParms)215 cmd.Parameters.Add(parm);216 }217 }218 }219 }