C#连接操作mysql实例

Stella981
• 阅读 462

[转]C#连接操作mysql实例

本文转自:http://hi.baidu.com/zhqngweng/item/c4d2520cb7216877bfe97edf

第三方组件:Mysql.Data.dll
说明:去官方网站下载Mysql.Data.dll,然后在项目中添加该组件的引用,在代码页里输入using Mysql.Data.MysqlClient,我们就可以顺利的使用该类库的函数建立连接了。

以下是几个常用函数:

#region  建立MySql数据库连接
   ///


   /// 建立数据库连接.
   ///

   /// 返回MySqlConnection对象
   public MySqlConnection getmysqlcon()
   {
       string M_str_sqlcon = "server=localhost;user id=root;password=root;database=abc"; //根据自己的设置
       MySqlConnection myCon = new MySqlConnection(M_str_sqlcon);
       return myCon;
   }
   #endregion

   #region  执行MySqlCommand命令
   ///


   /// 执行MySqlCommand
   ///

   /// SQL语句
   public void getmysqlcom(string M_str_sqlstr)
   {
       MySqlConnection mysqlcon = this.getmysqlcon();
       mysqlcon.Open();
       MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);
       mysqlcom.ExecuteNonQuery();
       mysqlcom.Dispose();
       mysqlcon.Close();
       mysqlcon.Dispose();
   }
   #endregion

#region  创建MySqlDataReader对象
   ///


   /// 创建一个MySqlDataReader对象
   ///

   /// SQL语句
   /// 返回MySqlDataReader对象
   public MySqlDataReader getmysqlread(string M_str_sqlstr)
   {
       MySqlConnection mysqlcon = this.getmysqlcon();
       MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);
       mysqlcon.Open();
       MySqlDataReader mysqlread = mysqlcom.ExecuteReader(CommandBehavior.CloseConnection);
       return mysqlread;
   }
   #endregion

另一篇:

测试环境:Windows XP + MySql 5.0.24 + Visual C# 2008 Exdivss Edition
By lucas 2008.12.29
1、用MySQLDriverCS连接MySQL数据库
先下载和安装MySQLDriverCS,地址:
http://sourceforge.net/projects/mysqldrivercs/
在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中
注:我下载的是版本是 MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySQLDriverCS;
namespace mysql
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
       private void Form1_Load(object sender, EventArgs e)
       {
           MySQLConnection conn = null;
           conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString);
           conn.Open();
           MySQLCommand commn = new MySQLCommand("set names gb2312", conn);
           commn.ExecuteNonQuery();
           string sql = "select * from exchange ";
           MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn);
           DataSet ds = new DataSet();
           mda.Fill(ds, "table1");
           this.dataGrid1.DataSource = ds.Tables["table1"];
           conn.Close();
       }
   }
}

2、通过ODBC访问mysql数据库:
参考:http://www.microsoft.com/china/community/Column/63.mspx
1.      安装Microsoft ODBC.net:我安装的是mysql-connector-odbc-3.51.22-win32.msi
2.      安装MDAC 2.7或者更高版本:我安装的是mdac_typ.exe 2.7简体中文版
3.      安装MySQL的ODBC驱动程序:我安装的是 odbc_net.msi
4.      管理工具 -> 数据源ODBC –>配置DSN…
5.      解决方案管理中添加引用 Microsoft.Data.Odbc.dll(1.0.3300)
6.      代码中增加引用 using Microsoft.Data.Odbc;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;   //vs2005好像没有这个命名空间,在c#2008下测试自动生成的
using System.Text;
using System.Windows.Forms;
using Microsoft.Data.Odbc;
namespace mysql
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
       private void Form1_Load(object sender, EventArgs e)
       {
           string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
                                "SERVER=localhost;" +
                                "DATABASE=inv;" +
                                "UID=root;" +
                                "PASSWORD=831025;" +
                                "OPTION=3";
           OdbcConnection MyConnection = new OdbcConnection(MyConString);
           MyConnection.Open();
           Console.WriteLine("\n success, connected successfully !\n");
           string query = "insert into test values( ''hello'', ''lucas'', ''liu'')";
           OdbcCommand cmd = new OdbcCommand(query, MyConnection);
           //处理异常:插入重复记录有异常
try{
  cmd.ExecuteNonQuery();
}
catch(Exception ex){
                Console.WriteLine("record duplicate.");
}finally{
                cmd.Dispose();
}
/
/
          MyConnection.Close();
       }
   }
}

使用示例:

using System;
using System.Configuration;
using MySql.Data.MySqlClient;
///


/// TestDatebase 的摘要说明
///

public class TestDatebase
{
   public TestDatebase()
   {
       //
       // TODO: 在此处添加构造函数逻辑
       //
   }
   public static void Main(String[] args)
   {
       MySqlConnection mysql = getMySqlCon();
       //查询sql
       String sqlSearch = "select * from student";
       //插入sql
       String sqlInsert = "insert into student values (12,'张三',25,'大专')";
       //修改sql
       String sqlUpdate = "update student set name='李四' where id= 3";
       //删除sql
       String sqlDel = "delete from student where id = 12";
       //打印SQL语句
       Console.WriteLine(sqlDel);
       //四种语句对象
       //MySqlCommand mySqlCommand = getSqlCommand(sqlSearch, mysql);
       //MySqlCommand mySqlCommand = getSqlCommand(sqlInsert, mysql);
       //MySqlCommand mySqlCommand = getSqlCommand(sqlUpdate, mysql);
       MySqlCommand mySqlCommand = getSqlCommand(sqlDel, mysql);
       mysql.Open();
       //getResultset(mySqlCommand);
       //getInsert(mySqlCommand);
       //getUpdate(mySqlCommand);
       getDel(mySqlCommand);
       //记得关闭
       mysql.Close();
      String readLine = Console.ReadLine();
   }
   ///
   /// 建立mysql数据库链接
   ///

   ///
   public static MySqlConnection getMySqlCon()
   {
       String mysqlStr = "Database=test;Data Source=127.0.0.1;User Id=root;Password=root;pooling=false;CharSet=utf8;port=3306";
       // String mySqlCon = ConfigurationManager.ConnectionStrings["MySqlCon"].ConnectionString;
       MySqlConnection mysql = new MySqlConnection(mysqlStr);
       return mysql;
   }
   ///
   /// 建立执行命令语句对象
   ///

   ///
   ///
   ///
   public static MySqlCommand getSqlCommand(String sql,MySqlConnection mysql)
   {
       MySqlCommand mySqlCommand = new MySqlCommand(sql, mysql);
       //  MySqlCommand mySqlCommand = new MySqlCommand(sql);
       // mySqlCommand.Connection = mysql;
       return mySqlCommand;
   }
   ///
   /// 查询并获得结果集并遍历
   ///

   ///
   public static void getResultset(MySqlCommand mySqlCommand)
   {
       MySqlDataReader reader = mySqlCommand.ExecuteReader();
       try
       {
           while (reader.Read())
           {
               if (reader.HasRows)
               {
                   Console.WriteLine("编号:" + reader.GetInt32(0) + "|姓名:" + reader.GetString(1) + "|年龄:" + reader.GetInt32(2) + "|学历:" + reader.GetString(3));
               }
           }
       }
       catch (Exception)
       {

Console.WriteLine("查询失败了!");
       }
       finally
       {
           reader.Close();
       }
   }
   ///


   /// 添加数据
   ///

   ///
   public static void getInsert(MySqlCommand mySqlCommand)
   {
       try
       {
           mySqlCommand.ExecuteNonQuery();
       }
       catch (Exception ex)
       {
           String message = ex.Message;
           Console.WriteLine("插入数据失败了!" + message);
       }
     
   }
   ///
   /// 修改数据
   ///

   ///
   public static void getUpdate(MySqlCommand mySqlCommand)
   {
       try
       {
           mySqlCommand.ExecuteNonQuery();
       }
       catch (Exception ex)
       {

String message = ex.Message;
           Console.WriteLine("修改数据失败了!" + message);
       }
   }
   ///


   /// 删除数据
   ///

   ///
   public static void getDel(MySqlCommand mySqlCommand)
   {
       try
       {
           mySqlCommand.ExecuteNonQuery();
       }
       catch (Exception ex)
       {
           String message = ex.Message;
           Console.WriteLine("删除数据失败了!" + message);
       }
   }
}

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这