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