1 2

VisualStudio 连接 MySql 实现增删查改

首先创建数据库,建立一个用户登录表

 

2、visualStudio默认是不支持MySql的,要想通过Ado.Net 操作MySql

需要在管理NeGet包添加对MySql.Data  和 MySql.Data.Entity的引用

 

 

3、在app.Config中添加数据库连接信息

4、前端页面代码:

 1        <WrapPanel>    
 2             <Button Content="是否存在" Name="IsExitBtn" Click="IsExitBtn_Click"
 3                     Width="60" Height="30" ></Button>
 4             <Button Content="新增" Name="AddBtn" Click="AddBtn_Click"
 5                     Width="60" Height="30"></Button>
 6             <Button Content="修改" Name="UpdateBtn" Click="UpdateBtn_Click"
 7                     Width="60" Height="30"></Button>
 8             <Button Content="删除" Name="DelBtn" Click="DelBtn_Click"
 9                     Width="60" Height="30"></Button>
10             <Button Content="批量删除" Name="BatchDelBtn" Click="BatchDelBtn_Click"
11                     Width="60" Height="30"></Button>
12             <Button Content="批量获取" Name="BatchGetListBtn" Click="BatchGetListBtn_Click"
13                     Width="60" Height="30" ></Button>   
14         </WrapPanel>

 

5、cs后台代码:

 1          private void AddBtn_Click(object sender, RoutedEventArgs e)
 2         {
 3             #region 新增
 4             StringBuilder addStrSql = new StringBuilder();
 5             addStrSql.Append("insert into LoginUser(");
 6             addStrSql.Append("UserId,Name,Age)");
 7             addStrSql.Append(" values (");
 8             addStrSql.Append("@UserId,@Name,@Age)");
 9 
10             MySqlParameter[] parameters = {
11                     new MySqlParameter("@UserId", 3),
12                     new MySqlParameter("@Name", "张三"),
13                     new MySqlParameter("@Age", 32)};
14             var add = new CaseUserData().Add(addStrSql.ToString(), parameters);
15             #endregion
16         }
17 
18         private void UpdateBtn_Click(object sender, RoutedEventArgs e)
19         {
20             #region 修改
21             StringBuilder updateStrSql = new StringBuilder();
22             updateStrSql.Append("update LoginUser set ");
23             updateStrSql.Append("Name=@Name,");
24             updateStrSql.Append("Age=@Age");
25             updateStrSql.Append(" WHERE UserId=@UserId");
26             MySqlParameter[] uparameters = {
27                     new MySqlParameter("@UserId", 1),
28                     new MySqlParameter("@Name", "王五"),
29                     new MySqlParameter("@Age", 33) };
30             var update = new CaseUserData().Update(updateStrSql.ToString(), uparameters);
31             #endregion
32         }
33 
34         private void DelBtn_Click(object sender, RoutedEventArgs e)
35         {
36             #region 删除一条数据
37             StringBuilder DelStrSql = new StringBuilder();
38             DelStrSql.Append("delete from LoginUser ");
39             DelStrSql.Append(" where UserId=@ID ");
40             MySqlParameter[] delparameters = {
41                     new MySqlParameter("@ID", 1) };
42             var del = new CaseUserData().Delete(DelStrSql.ToString(), delparameters);
43             #endregion
44         }
45 
46         private void BatchDelBtn_Click(object sender, RoutedEventArgs e)
47         {
48             #region 批量删除数据
49             List<int> idLists = new List<int>();
50             string ids = string.Join(",", idLists);                //List数组的每个元素加上引号,如("12","32","5456","876455")
51             string s1 = string.Format("'{0}'", ids.Replace(",", "','"));
52 
53             StringBuilder BatchDelStrSql = new StringBuilder();
54             BatchDelStrSql.Append("delete from LoginUser ");
55             BatchDelStrSql.Append(" where UserId in (" + s1 + ")");
56             var batchDel = new CaseUserData().DeleteList(BatchDelStrSql.ToString());
57             #endregion
58         }
59 
60         private void BatchGetListBtn_Click(object sender, RoutedEventArgs e)
61         {
62             #region 批量获取数据
63             StringBuilder batchGetStrSql = new StringBuilder();
64             batchGetStrSql.Append("select UserId,Name,Age FROM LoginUser ");
65             batchGetStrSql.Append(" where Age > 30");
66             var batchGetList = new CaseUserData().GetList(batchGetStrSql.ToString());
67             #endregion 
68         }
69 
70         private void IsExitBtn_Click(object sender, RoutedEventArgs e)
71         {
72             #region 数据是否存在
73             StringBuilder strSql = new StringBuilder();
74             strSql.Append("select count(1) from LoginUser");
75             strSql.Append(" where UserId=@ID ");
76             var d = new CaseUserData().Exists(strSql.ToString(), 1);
77             #endregion
78         }

 

6、定义一些基本方法的接口:

 1 using System;
 2 using System.Data;
 3 using System.Collections.Generic;
 4 using MvvmFuncationApp.DbHelper;
 5 using MySql.Data.MySqlClient;
 6 
 7 namespace iPIS.Server.IDAL
 8 {
 9     /// <summary>
10     /// 接口层caseuserdata
11     /// </summary>
12     public interface ICaseUserData
13     {
14         #region  成员方法
15         /// <summary>
16         /// 是否存在该记录
17         /// </summary>
18         bool Exists(string StrSql,int ID);
19         /// <summary>
20         /// 增加一条数据
21         /// </summary>
22         bool Add(string strSql,MySqlParameter[] parameters);
23         /// <summary>
24         /// 更新一条数据
25         /// </summary>
26         bool Update(string strSql, MySqlParameter[] parameters);
27         /// <summary>
28         /// 删除一条数据
29         /// </summary>
30         bool Delete(string strSql, MySqlParameter[] parameters);
31         bool DeleteList(string strSql);
32         /// <summary>
33         /// 得到一个对象实体
34         /// </summary>
35         ParametersModel GetModel(int ID);
36         /// <summary>
37         /// 获得数据列表
38         /// </summary>
39         List<ParametersModel> GetList(string strWhere);
40         
41         #endregion  成员方法
42         #region  MethodEx
43 
44         #endregion  MethodEx
45     } 
46 }

 

7、定义一个类,实现方法接口:

  1 using iPIS.Server.IDAL;
  2 using MvvmFuncationApp.DbHelper;
  3 using MySql.Data.MySqlClient;
  4 using System;
  5 using System.Collections.Generic;
  6 using System.Data;
  7 using System.Runtime.Serialization;
  8 using System.Text;
  9 using System.Xml.Linq;
 10 
 11 namespace iPIS.Server.Core
 12 {
 13     /// <summary>
 14     /// 数据访问类
 15     /// </summary>
 16     public partial class CaseUserData : ICaseUserData
 17     {
 18         public CaseUserData()
 19         { }
 20         /// <summary>
 21         /// 是否存在该记录
 22         /// </summary>
 23         public bool Exists(string StrSql,int ID)
 24         {
 25             MySqlParameter[] parameters = {
 26                     new MySqlParameter("@ID", MySqlDbType.Int32,10)         };
 27             parameters[0].Value = ID;
 28 
 29             return DbHelperMySql.Exists(StrSql.ToString(), parameters);
 30         }
 31 
 32         /// <summary>
 33         /// 增加一条数据
 34         /// </summary>
 35         public bool Add(string StrSql, MySqlParameter[] parameters)
 36         {
 37             int rows = DbHelperMySql.ExecuteSql(StrSql.ToString(), parameters);
 38             if (rows > 0)
 39             {
 40                 return true;
 41             }
 42             else
 43             {
 44                 return false;
 45             }
 46         }
 47 
 48         /// <summary>
 49         /// 更新一条数据
 50         /// </summary>
 51         public bool Update(string StrSql, MySqlParameter[] parameters)
 52         {       
 53             int rows = DbHelperMySql.ExecuteSql(StrSql.ToString(), parameters);
 54             if (rows > 0)
 55             {
 56                 return true;
 57             }
 58             else
 59             {
 60                 return false;
 61             }
 62         }
 63 
 64         /// <summary>
 65         /// 删除一条数据
 66         /// </summary>
 67         public bool Delete(string StrSql,MySqlParameter[] parameters)
 68         {
 69             int rows = DbHelperMySql.ExecuteSql(StrSql.ToString(), parameters);
 70             if (rows > 0)
 71             {
 72                 return true;
 73             }
 74             else
 75             {
 76                 return false;
 77             }
 78         }
 79 
 80         /// <summary>
 81         /// 批量删除数据
 82         /// </summary>
 83         public bool DeleteList(string BatchDelStrSql)
 84         {
 85             int rows = DbHelperMySql.ExecuteSql(BatchDelStrSql.ToString());
 86             if (rows > 0)
 87             {
 88                 return true;
 89             }
 90             else
 91             {
 92                 return false;
 93             }
 94         }
 95 
 96         /// <summary>
 97         /// 得到一个对象实体
 98         /// </summary>
 99         public ParametersModel GetModel(int ID)
100         {
101             StringBuilder strSql = new StringBuilder();
102             strSql.Append("select UserId,Name,Age from LoginUser ");
103             strSql.Append(" where UserId=@ID ");
104             MySqlParameter[] parameters = {
105                     new MySqlParameter("@ID", MySqlDbType.Int32,10)         };
106             parameters[0].Value = ID;
107 
108             ParametersModel model = new ParametersModel();
109             using (var ds = DbHelperMySql.ExecuteReader(strSql.ToString(), parameters))
110             {
111                 while (ds.Read())
112                 {
113                     return DataRowToModel(ds);
114                 }
115             }
116             return null;
117         }
118 
119         /// <summary>
120         /// 得到一个对象实体
121         /// </summary>
122         public ParametersModel DataRowToModel(IDataReader row)
123         {
124             ParametersModel model = new ParametersModel();
125             if (row != null)
126             {
127                 if (row["UserId"] != null && row["UserId"].ToString() != "")
128                 {
129                     model.ID = int.Parse(row["UserId"].ToString());
130                 }
131                 if (row["Name"] != null)
132                 {
133                     model.Name = row["Name"].ToString();
134                 }
135                 if (row["Age"] != null && row["Age"].ToString() != "")
136                 {
137                     model.Age = int.Parse(row["Age"].ToString());
138                 }
139                 
140             }
141             return model;
142         }
143 
144         /// <summary>
145         /// 获得数据列表
146         /// </summary>
147         public List<ParametersModel> GetList(string strSql)
148         {
149             using (var ds = DbHelperMySql.ExecuteReader(strSql.ToString()))
150             {
151                 var list = new List<ParametersModel>();
152                 while (ds.Read())
153                 {
154                     list.Add(DataRowToModel(ds));
155                 }
156                 return list;
157             }
158         }
159     }
160 }

 

8、数据库操作封装类:

  1 using System;
  2 using System.Collections;
  3 using System.Collections.Generic;
  4 using System.Data;
  5 using System.Linq;
  6 using System.Text;
  7 using System.Threading.Tasks;
  8 using MySql.Data.MySqlClient;
  9 
 10 namespace MvvmFuncationApp.DbHelper
 11 {
 12     public abstract class DbHelperMySql
 13     {
 14         //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.        
 15         public static string connectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]; // "server=127.0.0.1;port=3306;database=lktest;uid=root;pwd=123456";
 16 
 17         protected DbHelperMySql()
 18         {
 19         }
 20 
 21         #region 公用方法
 22         /// <summary>
 23         /// 得到最大值
 24         /// </summary>
 25         /// <param name="fieldName"></param>
 26         /// <param name="tableName"></param>
 27         /// <returns></returns>
 28         public static int GetMaxId(string fieldName, string tableName)
 29         {
 30             string strsql = "select max(" + fieldName + ")+1 from " + tableName;
 31             object obj = GetSingle(strsql);
 32             return obj == null ? 1 : int.Parse(obj.ToString());
 33         }
 34 
 35         /// <summary>
 36         /// 是否存在(基于MySqlParameter)
 37         /// </summary>
 38         /// <param name="strSql"></param>
 39         /// <param name="cmdParms"></param>
 40         /// <returns></returns>
 41         public static bool Exists(string strSql, params MySqlParameter[] cmdParms)
 42         {
 43             var obj = GetSingle(strSql, cmdParms);
 44             int cmdresult;
 45             if ((Equals(obj, null)) || (Equals(obj, DBNull.Value)))
 46             {
 47                 cmdresult = 0;
 48             }
 49             else
 50             {
 51                 cmdresult = int.Parse(obj.ToString());
 52             }
 53             return cmdresult != 0;
 54         }
 55         #endregion
 56 
 57         #region  执行简单SQL语句
 58 
 59         /// <summary>
 60         /// 执行SQL语句,返回影响的记录数
 61         /// </summary>
 62         /// <param name="sqlString">SQL语句</param>
 63         /// <returns>影响的记录数</returns>
 64         public static int ExecuteSql(string sqlString)
 65         {
 66             using (var connection = new MySqlConnection(connectionString))
 67             {
 68                 using (var cmd = new MySqlCommand(sqlString, connection))
 69                 {
 70                     try
 71                     {
 72                         connection.Open();
 73                         var rows = cmd.ExecuteNonQuery();
 74                         return rows;
 75                     }
 76                     catch (MySqlException e)
 77                     {
 78                         connection.Close();
 79                         throw e;
 80                     }
 81                 }
 82             }
 83         }
 84 
 85         public static int ExecuteSqlByTime(string sqlString, int times)
 86         {
 87             using (var connection = new MySqlConnection(connectionString))
 88             {
 89                 using (var cmd = new MySqlCommand(sqlString, connection))
 90                 {
 91                     try
 92                     {
 93                         connection.Open();
 94                         cmd.CommandTimeout = times;
 95                         var rows = cmd.ExecuteNonQuery();
 96                         return rows;
 97                     }
 98                     catch (MySqlException e)
 99                     {
100                         connection.Close();
101                         throw e;
102                     }
103                 }
104             }
105         }
106 
107         /// <summary>
108         /// 执行多条SQL语句,实现数据库事务。
109         /// </summary>
110         /// <param name="sqlStringList">多条SQL语句</param>        
111         public static int ExecuteSqlTran(List<String> sqlStringList)
112         {
113             using (var conn = new MySqlConnection(connectionString))
114             {
115                 conn.Open();
116                 var cmd = new MySqlCommand { Connection = conn };
117                 var tx = conn.BeginTransaction();
118                 cmd.Transaction = tx;
119                 try
120                 {
121                     var count = 0;
122                     foreach (var strsql in sqlStringList.Where(strsql => strsql.Trim().Length > 1))
123                     {
124                         cmd.CommandText = strsql;
125                         count += cmd.ExecuteNonQuery();
126                     }
127                     tx.Commit();
128                     return count;
129                 }
130                 catch (Exception ex)
131                 {
132                     tx.Rollback();
133                     throw ex;
134                 }
135             }
136         }
137 
138         /// <summary>
139         /// 执行带一个存储过程参数的的SQL语句。
140         /// </summary>
141         /// <param name="sqlString">SQL语句</param>
142         /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
143         /// <returns>影响的记录数</returns>
144         public static int ExecuteSql(string sqlString, string content)
145         {
146             using (var connection = new MySqlConnection(connectionString))
147             {
148                 var cmd = new MySqlCommand(sqlString, connection);
149                 var myParameter = new MySqlParameter("@content", SqlDbType.NText) { Value = content };
150                 cmd.Parameters.Add(myParameter);
151                 try
152                 {
153                     connection.Open();
154                     var rows = cmd.ExecuteNonQuery();
155                     return rows;
156                 }
157                 catch (MySqlException e)
158                 {
159                     throw e;
160                 }
161                 finally
162                 {
163                     cmd.Dispose();
164                     connection.Close();
165                 }
166             }
167         }
168 
169         /// <summary>
170         /// 执行带一个存储过程参数的的SQL语句。
171         /// </summary>
172         /// <param name="sqlString">SQL语句</param>
173         /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
174         /// <returns>影响的记录数</returns>
175         public static object ExecuteSqlGet(string sqlString, string content)
176         {
177             using (var connection = new MySqlConnection(connectionString))
178             {
179                 var cmd = new MySqlCommand(sqlString, connection);
180                 var myParameter = new MySqlParameter("@content", SqlDbType.NText) { Value = content };
181                 cmd.Parameters.Add(myParameter);
182                 try
183                 {
184                     connection.Open();
185                     var obj = cmd.ExecuteScalar();
186                     if ((Equals(obj, null)) || (Equals(obj, DBNull.Value)))
187                     {
188                         return null;
189                     }
190                     else
191                     {
192                         return obj;
193                     }
194                 }
195                 catch (MySqlException e)
196                 {
197                     throw e;
198                 }
199                 finally
200                 {
201                     cmd.Dispose();
202                     connection.Close();
203                 }
204             }
205         }
206 
207         /// <summary>
208         /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
209         /// </summary>
210         /// <param name="strSql">SQL语句</param>
211         /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
212         /// <returns>影响的记录数</returns>
213         public static int ExecuteSqlInsertImg(string strSql, byte[] fs)
214         {
215             using (var connection = new MySqlConnection(connectionString))
216             {
217                 var cmd = new MySqlCommand(strSql, connection);
218                 var myParameter = new MySqlParameter("@fs", SqlDbType.Image) { Value = fs };
219                 cmd.Parameters.Add(myParameter);
220                 try
221                 {
222                     connection.Open();
223                     var rows = cmd.ExecuteNonQuery();
224                     return rows;
225                 }
226                 catch (MySqlException e)
227                 {
228                     throw e;
229                 }
230                 finally
231                 {
232                     cmd.Dispose();
233                     connection.Close();
234                 }
235             }
236         }
237 
238         /// <summary>
239         /// 执行一条计算查询结果语句,返回查询结果(object)。
240         /// </summary>
241         /// <param name="sqlString">计算查询结果语句</param>
242         /// <returns>查询结果(object)</returns>
243         public static object GetSingle(string sqlString)
244         {
245             using (var connection = new MySqlConnection(connectionString))
246             {
247                 using (var cmd = new MySqlCommand(sqlString, connection))
248                 {
249                     try
250                     {
251                         connection.Open();
252                         var obj = cmd.ExecuteScalar();
253                         if ((Equals(obj, null)) || (Equals(obj, DBNull.Value)))
254                         {
255                             return null;
256                         }
257                         else
258                         {
259                             return obj;
260                         }
261                     }
262                     catch (MySqlException e)
263                     {
264                         connection.Close();
265                         throw e;
266                     }
267                 }
268             }
269         }
270 
271         public static object GetSingle(string sqlString, int times)
272         {
273             using (var connection = new MySqlConnection(connectionString))
274             {
275                 using (var cmd = new MySqlCommand(sqlString, connection))
276                 {
277                     try
278                     {
279                         connection.Open();
280                         cmd.CommandTimeout = times;
281                         var obj = cmd.ExecuteScalar();
282                         if ((Equals(obj, null)) || (Equals(obj, DBNull.Value)))
283                         {
284                             return null;
285                         }
286                         else
287                         {
288                             return obj;
289                         }
290                     }
291                     catch (MySqlException e)
292                     {
293                         connection.Close();
294                         throw e;
295                     }
296                 }
297             }
298         }
299         /// <summary>
300         /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close )
301         /// </summary>
302         /// <param name="strSql">查询语句</param>
303         /// <returns>MySqlDataReader</returns>
304         public static MySqlDataReader ExecuteReader(string strSql)
305         {
306             var connection = new MySqlConnection(connectionString);
307             var cmd = new MySqlCommand(strSql, connection);
308             try
309             {
310                 connection.Open();
311                 var myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
312                 return myReader;
313             }
314             catch (MySqlException e)
315             {
316                 throw e;
317             }
318 
319         }
320 
321         /// <summary>
322         /// 执行查询语句,返回DataSet
323         /// </summary>
324         /// <param name="sqlString">查询语句</param>
325         /// <returns>DataSet</returns>
326         [Obsolete("不再使用该接口,请使用ExecuteReader(string strSql)")]
327         public static DataSet Query(string sqlString)
328         {
329             using (var connection = new MySqlConnection(connectionString))
330             {
331                 var ds = new DataSet();
332                 try
333                 {
334                     connection.Open();
335                     var command = new MySqlDataAdapter(sqlString, connection);
336                     command.Fill(ds, "ds");
337                 }
338                 catch (MySqlException ex)
339                 {
340                     throw new Exception(ex.Message);
341                 }
342                 return ds;
343             }
344         }
345 
346         /// <summary>
347         /// 执行查询语句,返回DataSet
348         /// </summary>
349         /// <param name="sqlString"></param>
350         /// <param name="times">超时时间</param>
351         /// <returns></returns>
352         [Obsolete("不再使用该接口,请使用ExecuteReader(string strSql)")]
353         public static DataSet Query(string sqlString, int times)
354         {
355             using (var connection = new MySqlConnection(connectionString))
356             {
357                 var ds = new DataSet();
358                 try
359                 {
360                     connection.Open();
361                     var command = new MySqlDataAdapter(sqlString, connection) { SelectCommand = { CommandTimeout = times } };
362                     command.Fill(ds, "ds");
363                 }
364                 catch (MySqlException ex)
365                 {
366                     throw new Exception(ex.Message);
367                 }
368                 return ds;
369             }
370         }
371 
372         /// <summary>
373         /// 删除案件
374         /// </summary>
375         /// <returns></returns>
376         public static int ExecuteProcedure(string caseid)
377         {
378             using (var connection = new MySqlConnection(connectionString))
379             {
380                 using (var cmd = new MySqlCommand())
381                 {
382                     try
383                     {
384                         cmd.Connection = connection;
385                         connection.Open();
386                         cmd.CommandText = "sp_DeleteCaseInfo";
387                         cmd.CommandType = CommandType.StoredProcedure;
388 
389                         MySqlParameter id = new MySqlParameter("?id", MySqlDbType.VarChar, 50);
390                         id.Value = caseid;
391                         cmd.Parameters.Add(id);
392 
393                         MySqlParameter result = new MySqlParameter("?result", MySqlDbType.Int32, 4);
394                         result.Direction = ParameterDirection.Output;
395                         cmd.Parameters.Add(result);
396 
397                         cmd.ExecuteNonQuery();
398                         int state = int.Parse(result.Value.ToString());
399                         return state;
400                     }
401                     catch (MySqlException e)
402                     {
403                         throw e;
404                     }
405                 }
406             }
407         }
408 
409         #endregion
410 
411         #region 执行带参数的SQL语句
412 
413         /// <summary>
414         /// 执行SQL语句,返回影响的记录数
415         /// </summary>
416         /// <param name="sqlString">SQL语句</param>
417         /// <param name="cmdParms">参数化</param>
418         /// <returns>影响的记录数</returns>
419         public static int ExecuteSql(string sqlString, params MySqlParameter[] cmdParms)
420         {
421             using (var connection = new MySqlConnection(connectionString))
422             {
423                 using (var cmd = new MySqlCommand())
424                 {
425                     try
426                     {
427                         PrepareCommand(cmd, connection, null, sqlString, cmdParms);
428                         var rows = cmd.ExecuteNonQuery();
429                         cmd.Parameters.Clear();
430                         return rows;
431                     }
432                     catch (MySqlException e)
433                     {
434                         throw e;
435                     }
436                 }
437             }
438         }
439 
440 
441         /// <summary>
442         /// 执行多条SQL语句,实现数据库事务。
443         /// </summary>
444         /// <param name="sqlStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>
445         public static void ExecuteSqlTran(Hashtable sqlStringList)
446         {
447             using (var conn = new MySqlConnection(connectionString))
448             {
449                 conn.Open();
450                 using (var trans = conn.BeginTransaction())
451                 {
452                     var cmd = new MySqlCommand();
453                     try
454                     {
455                         //循环
456                         foreach (DictionaryEntry myDe in sqlStringList)
457                         {
458                             var cmdText = myDe.Key.ToString();
459                             var cmdParms = (MySqlParameter[])myDe.Value;
460                             PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
461                             var val = cmd.ExecuteNonQuery();
462                             cmd.Parameters.Clear();
463                         }
464                         trans.Commit();
465                     }
466                     catch
467                     {
468                         trans.Rollback();
469                         throw;
470                     }
471                 }
472             }
473         }
474 
475         /// <summary>
476         /// 执行多条SQL语句,实现数据库事务。
477         /// </summary>
478         /// <param name="cmdList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>
479         public static int ExecuteSqlTran(List<CommandInfo> cmdList)
480         {
481             using (var conn = new MySqlConnection(connectionString))
482             {
483                 conn.Open();
484                 using (var trans = conn.BeginTransaction())
485                 {
486                     var cmd = new MySqlCommand();
487                     try
488                     {
489                         var count = 0;
490                         //循环
491                         foreach (var myDe in cmdList)
492                         {
493                             string cmdText = myDe.CommandText;
494                             var cmdParms = (MySqlParameter[])myDe.Parameters;
495                             PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
496 
497                             if (myDe.EffentNextType == EffentNextType.WhenHaveContine || myDe.EffentNextType == EffentNextType.WhenNoHaveContine)
498                             {
499                                 if (myDe.CommandText.ToLower().IndexOf("count(") == -1)
500                                 {
501                                     trans.Rollback();
502                                     return 0;
503                                 }
504 
505                                 object obj = cmd.ExecuteScalar();
506                                 bool isHave = false;
507                                 if (obj == null && obj == DBNull.Value)
508                                 {
509                                     isHave = false;
510                                 }
511                                 isHave = Convert.ToInt32(obj) > 0;
512 
513                                 if (myDe.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
514                                 {
515                                     trans.Rollback();
516                                     return 0;
517                                 }
518                                 if (myDe.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
519                                 {
520                                     trans.Rollback();
521                                     return 0;
522                                 }
523                                 continue;
524                             }
525                             int val = cmd.ExecuteNonQuery();
526                             count += val;
527                             if (myDe.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
528                             {
529                                 trans.Rollback();
530                                 return 0;
531                             }
532                             cmd.Parameters.Clear();
533                         }
534                         trans.Commit();
535                         return count;
536                     }
537                     catch
538                     {
539                         trans.Rollback();
540                         throw;
541                     }
542                 }
543             }
544         }
545 
546         /// <summary>
547         /// 执行多条SQL语句,实现数据库事务。
548         /// </summary>
549         /// <param name="sqlStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>
550         public static void ExecuteSqlTranWithIndentity(System.Collections.Generic.List<CommandInfo> sqlStringList)
551         {
552             using (var conn = new MySqlConnection(connectionString))
553             {
554                 conn.Open();
555                 using (var trans = conn.BeginTransaction())
556                 {
557                     var cmd = new MySqlCommand();
558                     try
559                     {
560                         var indentity = 0;
561                         //循环
562                         foreach (var myDe in sqlStringList)
563                         {
564                             var cmdText = myDe.CommandText;
565                             var cmdParms = (MySqlParameter[])myDe.Parameters;
566                             foreach (var q in cmdParms)
567                             {
568                                 if (q.Direction == ParameterDirection.InputOutput)
569                                 {
570                                     q.Value = indentity;
571                                 }
572                             }
573                             PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
574                             int val = cmd.ExecuteNonQuery();
575                             foreach (var q in cmdParms)
576                             {
577                                 if (q.Direction == ParameterDirection.Output)
578                                 {
579                                     indentity = Convert.ToInt32(q.Value);
580                                 }
581                             }
582                             cmd.Parameters.Clear();
583                         }
584                         trans.Commit();
585                     }
586                     catch
587                     {
588                         trans.Rollback();
589                         throw;
590                     }
591                 }
592             }
593         }
594 
595         /// <summary>
596         /// 执行多条SQL语句,实现数据库事务。
597         /// </summary>
598         /// <param name="sqlStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>
599         public static void ExecuteSqlTranWithIndentity(Hashtable sqlStringList)
600         {
601             using (var conn = new MySqlConnection(connectionString))
602             {
603                 conn.Open();
604                 using (var trans = conn.BeginTransaction())
605                 {
606                     var cmd = new MySqlCommand();
607                     try
608                     {
609                         var indentity = 0;
610                         //循环
611                         foreach (DictionaryEntry myDe in sqlStringList)
612                         {
613                             string cmdText = myDe.Key.ToString();
614                             var cmdParms = (MySqlParameter[])myDe.Value;
615                             foreach (MySqlParameter q in cmdParms)
616                             {
617                                 if (q.Direction == ParameterDirection.InputOutput)
618                                 {
619                                     q.Value = indentity;
620                                 }
621                             }
622                             PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
623                             int val = cmd.ExecuteNonQuery();
624                             foreach (MySqlParameter q in cmdParms)
625                             {
626                                 if (q.Direction == ParameterDirection.Output)
627                                 {
628                                     indentity = Convert.ToInt32(q.Value);
629                                 }
630                             }
631                             cmd.Parameters.Clear();
632                         }
633                         trans.Commit();
634                     }
635                     catch
636                     {
637                         trans.Rollback();
638                         throw;
639                     }
640                 }
641             }
642         }
643 
644         /// <summary>
645         /// 执行一条计算查询结果语句,返回查询结果(object)。
646         /// </summary>
647         /// <param name="sqlString">计算查询结果语句</param>
648         /// <param name="cmdParms">参数化</param>
649         /// <returns>查询结果(object)</returns>
650         public static object GetSingle(string sqlString, params MySqlParameter[] cmdParms)
651         {
652             using (var connection = new MySqlConnection(connectionString))
653             {
654                 using (var cmd = new MySqlCommand())
655                 {
656                     try
657                     {
658                         PrepareCommand(cmd, connection, null, sqlString, cmdParms);
659                         var obj = cmd.ExecuteScalar();
660                         cmd.Parameters.Clear();
661                         if ((Equals(obj, null)) || (Equals(obj, DBNull.Value)))
662                         {
663                             return null;
664                         }
665                         else
666                         {
667                             return obj;
668                         }
669                     }
670                     catch (MySqlException e)
671                     {
672                         throw e;
673                     }
674                 }
675             }
676         }
677 
678         /// <summary>
679         /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close )
680         /// </summary>
681         /// <param name="sqlString">查询语句</param>
682         /// <param name="cmdParms">参数化</param>
683         /// <returns>MySqlDataReader</returns>
684         public static MySqlDataReader ExecuteReader(string sqlString, params MySqlParameter[] cmdParms)
685         {
686             var connection = new MySqlConnection(connectionString);
687             var cmd = new MySqlCommand();
688             try
689             {
690                 PrepareCommand(cmd, connection, null, sqlString, cmdParms);
691                 var myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
692                 cmd.Parameters.Clear();
693                 return myReader;
694             }
695             catch (MySqlException e)
696             {
697                 throw e;
698             }
699             //            finally
700             //            {
701             //                cmd.Dispose();
702             //                connection.Close();
703             //            }    
704 
705         }
706 
707         /// <summary>
708         /// 执行查询语句,返回DataSet
709         /// </summary>
710         /// <param name="sqlString">查询语句</param>
711         /// <param name="cmdParms">参数化</param>
712         /// <returns>DataSet</returns>
713         [Obsolete("不再使用该接口,请使用ExecuteReader(string sqlString, params MySqlParameter[] cmdParms)")]
714         public static DataSet Query(string sqlString, params MySqlParameter[] cmdParms)
715         {
716             using (var connection = new MySqlConnection(connectionString))
717             {
718                 var cmd = new MySqlCommand();
719                 PrepareCommand(cmd, connection, null, sqlString, cmdParms);
720                 using (var da = new MySqlDataAdapter(cmd))
721                 {
722                     var ds = new DataSet();
723                     try
724                     {
725                         da.Fill(ds, "ds");
726                         cmd.Parameters.Clear();
727                     }
728                     catch (MySqlException ex)
729                     {
730                         throw new Exception(ex.Message);
731                     }
732                     return ds;
733                 }
734             }
735         }
736 
737         private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, string cmdText, MySqlParameter[] cmdParms)
738         {
739             if (conn.State != ConnectionState.Open)
740                 conn.Open();
741             cmd.Connection = conn;
742             cmd.CommandText = cmdText;
743             if (trans != null)
744                 cmd.Transaction = trans;
745             cmd.CommandType = CommandType.Text;//cmdType;
746             if (cmdParms != null)
747             {
748 
749 
750                 foreach (MySqlParameter parameter in cmdParms)
751                 {
752                     if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
753                         (parameter.Value == null))
754                     {
755                         parameter.Value = DBNull.Value;
756                     }
757                     cmd.Parameters.Add(parameter);
758                 }
759             }
760         }
761 
762         #endregion
763     }
764 }

 

9、数据库数据转模型:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MvvmFuncationApp.DbHelper
{
        /// <summary>
        /// 案件关联用户自定义数据
        /// </summary>
        [Serializable]
        public partial class ParametersModel
        {
            public ParametersModel()
            { }
            #region Model
            private int _id;
            private string _DataID;
            private int _age;
            private string _name;
            private string _userdata;
            private string _extended1;
            private string _extended2;
            /// <summary>
            /// 
            /// </summary>
            public int ID
            {
                set { _id = value; }
                get { return _id; }
            }
            /// <summary>
            /// 关联数据ID,DataType=1 案件id;DataType=2 图片id
            /// </summary>
            public string DataID
            {
                set { _DataID = value; }
                get { return _DataID; }
            }
            /// <summary>
            /// 数据类型。详见枚举值
            /// </summary>
            public int Age
            {
                set { _age = value; }
                get { return _age; }
            }
            /// <summary>
            /// 数据名称
            /// </summary>
            public string Name
            {
                set { _name = value; }
                get { return _name; }
            }
            /// <summary>
            /// 数据详细内容
            /// </summary>
            public string UserData
            {
                set { _userdata = value; }
                get { return _userdata; }
            }
            /// <summary>
            /// 
            /// </summary>
            public string Extended1
            {
                set { _extended1 = value; }
                get { return _extended1; }
            }
            /// <summary>
            /// 
            /// </summary>
            public string Extended2
            {
                set { _extended2 = value; }
                get { return _extended2; }
            }
            #endregion Model

        }
    
}

 可以直接使用,亲测没问题。

posted @ 2019-07-22 17:38  大海的泡沫  阅读(3310)  评论(0编辑  收藏  举报
1 2