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. 防止浏览器拦截的window.open新窗口方案

    背景 当前的浏览器为了保证用户体验,在很多场合下禁止了window.open打开新窗口,下面就给出一些方案,最大程度上的实现新窗口打开一个链接. 方案 //打开新链接方法实现 function win ...

  2. noip2013提高组day1第一题-转圈游戏——快速幂典型应用

    所谓的快速幂: // 计算 m^n % k 的快速幂算法 int quickpow(int m,int n,int k) { ; ) { ) b = (b*m)%k; n = n >> ; ...

  3. wikioi 1474 十进制转m进制

    /*===================================== 1474 十进制转m进制 题目描述 Description 将十进制数n转换成m进制数 m<=16 n<=1 ...

  4. 【转】 C#程序以管理员权限运行

    C#程序以管理员权限运行在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无 ...

  5. 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  6. struts2异常处理及类型转换

    一.struts2对异常的处理 1.自定义局部异常: <action> <exception-mapping result="sonException" exce ...

  7. 安卓中Activity的onStart()和onResume()的区别是什么

    知道Activity的四种状态:Active/Runing 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态. Paused 当 Activ ...

  8. AMD规范基本结构

    AMD规范:使用 define 和 require ,基本结构如下: // 定义模块 define(['moduleA', 'moduleB', 'moduleC'], function (modul ...

  9. placeholder兼容方法(兼容IE8以上浏览器)

    //placeholder兼容方法(兼容IE8以上浏览器) var JPlaceHolder = { //检测 _check: function () { return 'placeholder' i ...

  10. 持续集成之Jenkins(坏老头)

    点击关注哦↑↑↑↑↑↑↑↑↑ 持续集成 有关持续集成的简介,可参考我此前的文章:http://blog.csdn.net/benkaoya/article/details/44993583 Jenki ...