.NET访问mysql数据库方法集合

本文介绍了一家公司从Java/JSP+MySQL的工作流网站转向使用VB2005开发MIS系统的经历,详细讨论了使用不同方法连接MySQL的过程,并提供了具体的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 http://blog.sina.com.cn/u/4b6522390100089i(转)
  原来只计划用java/jsp+mysql开发的公司工作流网站,但网站开发出来后,系统运行效果不错。于是公司决定自行开发MIS。
 
  用什么方案来开发MIS呢?倒是费了一番心思。经过GOOGLE找了半天,也咨询了一些“牛人”。结论是用java来写MIS,效率太低,而且SWING有太多限制,像类似tree、grid等控件。当然用java来写,能较好地与目前的网站结合。
 
   最后决定用VB2005,但数据库不更换,只能用MySql。这样就会存在完全不同的两套系统,至少在数据存储层都是MYSQL。而且mysql是免费的,也不会加大公司开发成本。当然也可用盗版的ORACLE或是MSSQL,但个人觉得盗版总不是件光彩的事。
 
  下面是自己用VB2005连接MYSQL5.0的一些总结:

vb2005连接mysql

1 odbc连接mysql(Microsoft提供)
1.1  ODBC.NET(全称ODBC .NET Data Provider)是一个免费的.NET Framework附加组件,需要到微软
公司的网站上去下载,
下载地址为:
http://download.microsoft.com/download/dasdk/Install/1.0.4030.0/W98NT42KMeXP/EN-US/odbc_net.msi,它需要系统已经安装MDAC 2.7或者更高版本。
1.2
  至http://www.mysql.com/downloads/api-myodbc-2.50.html下载mysql Odbc驱动
1.3
  安装完后,还需要在"ODBC数据源管理器"中配置一下DSN
这种连接方式不方便。客户机访问时要设置ODBC。


2 oledb连接mysql(mysql官方提供)
2.1  到 http://dev.mysql.com/downloads/connector/net/5.0.html,
     下载 MySQL Connector/Net 5.0:
     mysql-connector-net-5.0.3.zip
2.2  到 http://dev.mysql.com/downloads/visual-studio-plugin/index.html,
     下载 MySQL Visual Studio Plugin 1.1:
      MySQL.VisualStudio-1.0.2.zip

2.3  安装 MySQL Connector/Net 5.0,
     注意:安装到 Final Setup Options  这一步时,要选中  Register Connector/Net in the

Global Assembly Cache 。

这样就可以使用vb2005中的工具菜单-->连接数据库-->连接Mysql了。

 图片未显示

显然第二种方法更好。

 
下面是第二方法的示例代码
      Dim pubsSQLConn As MySqlConnection   'db 连接
        Dim conStr As String
        pubsSQLConn = New MySqlConnection

        conStr = "server=;user id=;pwd=;database=;port="  '连接字符串
        pubsSQLConn.ConnectionString = conStr
        pubsSQLConn.Open()

        Dim tr As MySqlTransaction = pubsSQLConn.BeginTransaction '事务
        Dim sql As String
        sql = "insert into table(a,b) values('c','d')   'insert table '如果是select之类语句,最好用个dataAdapter

        Dim cmd As New MySqlCommand(sql, pubsSQLConn, tr) 

        Dim records As Integer = cmd.ExecuteNonQuery()  '执行

        tr.Commit()  '提交  提交失败也可回滚  我这边就不定了.

        Debug.WriteLine(records)  结果应是>=1
        Debug.Print(conStr)

        pubsSQLConn.Close()  '关闭连接


就这么多了,有兴趣可email :jarwang@sina.com

3. oledb连接mysql(出现版本问题,无法实现)(第三放提供)

采用MySQLDriverCS驱动的操作mysql  
   
  MySQLConnection   conn   =   null;  
  string   tmp   =   null;  
  string   connstr   =   "Data   Source=test;Password={2};User   ID={1};Location={0};";  
  connstr=String.Format(connstr,this._ServiceName.Text.Trim(),this._UserId.Text.Trim(),this._Password.Text.Trim());          
  string   query="   drop   table   if   exists   dbtable   ";  
   
  try  
  {  
  string   time1=System.DateTime.Now.ToString();    
  conn   =     new   MySQLConnection(connstr);  
  conn.Open();  
  MySQLCommand   cmd   =   new   MySQLCommand(query,   conn);  
  cmd.ExecuteNonQuery();  
  query="create   table   dbtable   (id   int   ,col1   char(20)   ,col2   char(20),col3   char(20)   )   ";  
  cmd.CommandText=query;  
  cmd.ExecuteNonQuery();  
  query   =   "insert   into   test.dbtable   values(10,   'disksidkfsdi',   'asdfaf',   'adsfasdf')";  
  cmd.CommandText=query;  
   
   
  for(int   i   =   0;   i   <   1000;   i++)  
  {  
  cmd.ExecuteNonQuery();  
  }  
  //cmd.Dispose();  
  //conn.Close();  
  query   =   "select   *   from   test.dbtable";  
  //MySQLCommand   cmd2   =   new   MySQLCommand(query,   conn);  
  //conn.Open();  
  cmd.CommandText=query;  
   
  MySQLDataReader   reader   =   cmd.ExecuteReaderEx();  
  while(reader.Read())  
  {  
  tmp   =   reader[0].ToString();  
  tmp   =   reader[1].ToString();  
  tmp   =   reader[2].ToString();  
  tmp   =   reader[3].ToString();  
  }  
  reader.Close();  
  //conn.Close();  
  query   =   "delete   from   test.dbtable";  
  cmd.CommandText   =query;  
  //MySQLCommand   cmd3   =   new   MySQLCommand(query,   conn);  
  //conn.Open();  
  cmd.ExecuteNonQuery();  
   
  query="   drop   table   if   exists   dbtable   ";  
  cmd.CommandText   =query;  
  cmd.ExecuteNonQuery();  
  cmd.Dispose();  
  MessageBox.Show(time1+"---"   +System.DateTime.Now.ToString(),"操作完成!");    
  }  
  catch(Exception   ex)  
  {  
  MessageBox.Show(ex.Message);  
  }  
  finally  
  {  
  conn.Close();  
   
  }  
 ---------------------------------------------------------------

利用MySQLDriverCS实现在.NET环境下访问MySQL数据库

最近首页“论坛热贴”这个板块的数据无法更新,最后发现原来是由于论坛的数据库移到了系统为Linux的服务器上后,用的是MySQL数据库,而“论坛热贴”这个板块是在.Net环境下开发的,所以无法直接掉用到论坛的数据。

       这个问题我是第一次遇到过,根本没有着落。最后听我们大炮说有一个叫 MySQLDriverCS”的东西可以在.Net环境下实现对MySQL数据库的访问,在网上看了一些它的用法,最后是这么解决这个问题的:

using System;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using MySQLDriverCS;

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        MySQLConnection conn = null;

        conn = new MySQLConnection(new MySQLConnectionString("##", "##", "##", "#").AsString);

        conn.Open();

        MySQLCommand commn = new MySQLCommand("set names gb2312",conn);

        commn.ExecuteNonQuery();

        string sql = "select title,topicID, boardId ,dateandtime,hits  from  Dv_topic order by dateandtime desc limit 10";

        MySQLDataAdapter mda = new MySQLDataAdapter(sql,conn);

        DataSet ds = new DataSet();

        mda.Fill(ds, "table1");

        this.Repeater1.DataSource = ds;

        this.Repeater1.DataBind();

        conn.Close();

    }

}

就这样就可以实现在.NET环境下对MySQL数据的访问。在这之前还要做一些准备,下载MySQLDriverCS,安装,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中就OK了。也许你对这行代码

MySQLCommand commn = new MySQLCommand("set names gb2312",conn);

        commn.ExecuteNonQuery();

不太理解。这是因为如果没有这句话从数据库里读出的数据中如果有中文将显示乱码,只要把这个语句“set names gb2312”当作SQL语句执行一遍就可以了。

    这是我完成这项任务的一点小小体会,拿出来和大家分享了。

呵呵!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值