1 using MySql.Data.MySqlclient; // 引进MYSQL 库 2 3 // C# 连接 MYSQL 数据库更好的方法 4 5 void func_02() 6 { 7 string str_conn_info = ""; 8 str_conn_info += " Host = " + db_ip + ";"; 9 str_conn_info += " Database = " + db_ip + ";"; 10 str_conn_info += " User = " + db_ip + ";"; 11 str_conn_info += " password = " + db_ip + ";"; 12 str_conn_info += " port = " + db_ip + ";"; 13 str_conn_info += " Charset = utf8"; 14 15 MySqlCommand sql_cmd = new MySqlCommand(); 16 sql_cmd.Connection = new MySqlConnection(); 17 18 sql_cmd.Connection.ConnectionString = str_conn_info; 19 20 if (!connect_to_mysql(sql_cmd.Connection)) 21 { 22 // 连接失败 23 return; 24 } 25 26 try 27 { 28 // 添加SQL 语句,并运行 29 sql_cmd.CommandText = "SELECT mail_id, mail_src_id, first_read_time, get_items_time, del_mail_time" 30 + " FROM log_mail WHERE player_id = 1"; 31 32 // 运行的结果集放到MySqlDataReader 中 33 MySqlDataReader data_reader = sql_cmd.ExecuteReader(); 34 35 // 从结果集中取数据 36 try 37 { 38 while (data_reader.Read()) 39 { 40 PlayerMailRecordForm.struMailRecord mail_record = new PlayerMailRecordForm.struMailRecord(); 41 mail_record.mail_id = data_reader.GetUInt32("mail_id"); 42 mail_record.mail_src_id = data_reader.GetUInt32("mail_src_id"); 43 mail_record.str_first_read = data_reader.GetString("first_read_time"); 44 if (data_reader["get_items_time"] != DBNull.Value) // 如果该字段 IS NOT NULL 45 mail_record.str_get_items = data_reader.GetString("get_items_time"); 46 if (data_reader["del_mail_time"] != DBNull.Value) 47 mail_record.str_del_mail = data_reader.GetString("del_mail_time"); 48 } 49 50 51 // 关闭结果集,如果不关闭,下次运行SQL 语句时会出问题。 52 data_reader.Close(); 53 } 54 catch (Exception ex) 55 { 56 MessageBox.Show(ex.Message); 57 58 // 关闭结果集,如果不关闭,下次运行SQL 语句时会出问题。 59 data_reader.Close(); 60 return; 61 } 62 } 63 catch (System.Exception ex) 64 { 65 MessageBox.Show(ex.Message); 66 disconnect_from_mysql(sql_cmd.Connection); 67 return; 68 } 69 70 // 关闭连接 71 disconnect_from_mysql(sql_cmd.Connection); 72 73 // 这里没有找到对于MySqlCommand 释放的方法,感觉应该是没有,不过也没关系了,这里整个对象都回收了,应该是OK的。 74 } 75 76 77 public bool connect_to_mysql(MySqlConnection conn_clt) 78 { 79 switch (conn_clt.State) 80 { 81 case ConnectionState.Open: 82 case ConnectionState.Connecting: 83 case ConnectionState.Executing: 84 case ConnectionState.Fetching: 85 case ConnectionState.Broken: 86 break; 87 case ConnectionState.Closed: 88 default: 89 try 90 { 91 conn_clt.Open(); 92 } 93 catch(Exception ex) 94 { 95 MessageBox.Show(ex.Message); 96 return false; 97 } 98 break; 99 } 100 101 return true; 102 } 103 104 public void disconnect_from_mysql(MySqlConnection conn_clt) 105 { 106 switch (conn_clt.State) 107 { 108 case ConnectionState.Open: 109 case ConnectionState.Connecting: 110 case ConnectionState.Executing: 111 case ConnectionState.Fetching: 112 case ConnectionState.Broken: 113 conn_clt.Close(); 114 break; 115 case ConnectionState.Closed: 116 default: 117 break; 118 } 119 }