using MySql.Data.MySqlclient;        // 引进MYSQL 库

 // C# 连接 MYSQL 数据库更好的方法

 void func_02()
{
string str_conn_info = "";
str_conn_info += " Host = " + db_ip + ";";
str_conn_info += " Database = " + db_ip + ";";
str_conn_info += " User = " + db_ip + ";";
str_conn_info += " password = " + db_ip + ";";
str_conn_info += " port = " + db_ip + ";";
str_conn_info += " Charset = utf8"; MySqlCommand sql_cmd = new MySqlCommand();
sql_cmd.Connection = new MySqlConnection(); sql_cmd.Connection.ConnectionString = str_conn_info; if (!connect_to_mysql(sql_cmd.Connection))
{
// 连接失败
return;
} try
{
// 添加SQL 语句,并运行
sql_cmd.CommandText = "SELECT mail_id, mail_src_id, first_read_time, get_items_time, del_mail_time"
+ " FROM log_mail WHERE player_id = 1"; // 运行的结果集放到MySqlDataReader 中
MySqlDataReader data_reader = sql_cmd.ExecuteReader(); // 从结果集中取数据
try
{
while (data_reader.Read())
{
PlayerMailRecordForm.struMailRecord mail_record = new PlayerMailRecordForm.struMailRecord();
mail_record.mail_id = data_reader.GetUInt32("mail_id");
mail_record.mail_src_id = data_reader.GetUInt32("mail_src_id");
mail_record.str_first_read = data_reader.GetString("first_read_time");
if (data_reader["get_items_time"] != DBNull.Value) // 如果该字段 IS NOT NULL
mail_record.str_get_items = data_reader.GetString("get_items_time");
if (data_reader["del_mail_time"] != DBNull.Value)
mail_record.str_del_mail = data_reader.GetString("del_mail_time");
} // 关闭结果集,如果不关闭,下次运行SQL 语句时会出问题。
data_reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); // 关闭结果集,如果不关闭,下次运行SQL 语句时会出问题。
data_reader.Close();
return;
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
disconnect_from_mysql(sql_cmd.Connection);
return;
} // 关闭连接
disconnect_from_mysql(sql_cmd.Connection); // 这里没有找到对于MySqlCommand 释放的方法,感觉应该是没有,不过也没关系了,这里整个对象都回收了,应该是OK的。
} public bool connect_to_mysql(MySqlConnection conn_clt)
{
switch (conn_clt.State)
{
case ConnectionState.Open:
case ConnectionState.Connecting:
case ConnectionState.Executing:
case ConnectionState.Fetching:
case ConnectionState.Broken:
break;
case ConnectionState.Closed:
default:
try
{
conn_clt.Open();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
break;
} return true;
} public void disconnect_from_mysql(MySqlConnection conn_clt)
{
switch (conn_clt.State)
{
case ConnectionState.Open:
case ConnectionState.Connecting:
case ConnectionState.Executing:
case ConnectionState.Fetching:
case ConnectionState.Broken:
conn_clt.Close();
break;
case ConnectionState.Closed:
default:
break;
}
}

C# 连接操作MYSQL 数据库_02的更多相关文章

  1. Python MySQLdb模块连接操作mysql数据库实例_python

    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...

  2. 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)

    前言   安装了mysq数据库,最终时为了实现在一个树莓派上实现多用户多进程操作的同步问题,避免数据并发出现一些错误,本篇安装了远程服务并且讲述了使用Qt进行悲观锁for update操作,命令行进行 ...

  3. C#连接操作MySQL数据库详细步骤 帮助类等(二次改进版)

    最近准备写一个仓库管理的项目 客户要求使用C#编写MySQL存储数据 为了方便,整理了数据库操作的工具类 首先在项目App.config 文件下添加节点 <connectionStrings&g ...

  4. python 连接操作mysql数据库

    开发数据库程序流程: 1.创建connection对象,获取cursor 2.使用cursor执行SQL 3.使用cursor获取数据.判断执行状态 4.提交事务 或者 回滚事务 import: 数据 ...

  5. ASP.NET Core使用EF Core操作MySql数据库

    ASP.NET Core操作MySql数据库, 这样整套环境都可以布署在Linux上 使用微软的 Microsoft.EntityFrameworkCore(2.1.4) 和MySql出的 MySql ...

  6. robot_framewok自动化测试--(9)连接并操作 MySql 数据库

    连接并操作 MySql 数据库 1.mysql数据库 1.1安装mysql数据库 请参考我的另一篇文章:MYSQL5.7下载安装图文教程 1.2.准备测试数据 请参考我的另一篇文章:Mysql基础教程 ...

  7. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  8. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  9. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

随机推荐

  1. datagrid中load,reload,loadData方法的区别

    它有其中有load,reload,loadData这三个方法,它们都有相同的功能,都是加载数据的,但又有区别. load方法,比如我已经定义一个datagrid的id为grid,那这个方法的使用方式为 ...

  2. 利用zip(或者phar)协议进行本地文件包含

    $include_file=$_GET[include_file];if ( isset( $include_file ) && strtolower( substr( $includ ...

  3. 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。

    64位系统 IIS7.0配置.net网站时报错:未能加载文件或程序集"XXX"或它的某一个依赖项.试图加载格式不正确的程序. 背景: 在64位的操作系统中, IIS7.0配置.ne ...

  4. jQuery中each的用法之退出循环和结束本次循环

    jQuery中each的用法之退出循环和结束本次循环 jQuery中each类似于javascript的for循环 但不同于for循环的是在each里面不能使用break结束循环,也不能使用conti ...

  5. Python_day8_面向对象(多态、成员修饰符、类中特殊方法、对象边缘知识)、异常处理之篇

    一.面向对象之多态 1.多态:简而言子就是多种形态或多种类型 python中不支持多态也用不到多态,多态的概念是应用与java/C#中指定传参的数据类型, java多态传参:必须是传参数的数据类型或传 ...

  6. StringBuilder与StringBuffer的区别(转)

    相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类.St ...

  7. PCA的数学原理

    PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维 数据的 ...

  8. JDBC - Oracle PreparedStatement (GeneratedKey kind) ArrayIndexOutOfBoundsException

    问题: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 12at oracle.jdbc. ...

  9. Oracle内存参数配置及版本问题

    Oracle的内存配置与Oracle性能息息相关.从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA).在 32 位操作系统下 的Oracle版本,不时有项目反馈关于内存 ...

  10. 推荐一个大文件查找工具---WizTree

    DB备份.dump.电影等文件多了以后,经常遇到磁盘空间不够用的情况,日积月累本来清晰的目录结构找起来也很费劲,尤其是要查找删除无用的大文件.windows本身那差劲的搜索功能就不提了,从搜索引擎上查 ...