现在的位置: 首页 > 综合 > 正文

.net与mysql连接

2012年03月06日 ⁄ 综合 ⁄ 共 4832字 ⁄ 字号 评论关闭

 首先去mysql网站下载一个mysql非安装版本

http://dev.mysql.com/downloads/mysql/5.0.html

如果你感觉使用dos命令行不方便的话,可以顺便也下载一个GUI客户端:

http://dev.mysql.com/downloads/gui-tools/5.0.html

然后打开vs..这个版本必须是2003以上。

然后呢,建立一个windowsApplication工程,然后在里面的app.config

<?xml   version="1.0"   encoding="utf-8"?>
<configuration>
  <appSettings>
    <add   key="Restaurant"   value="server=localhost;user id=root;password=;database=test;allow zero datetime=true;"></add>
  </appSettings>
</configuration>

如果你想把连接字符串写在程序里的话:将下面的代码改为string strConn =  “server=localhost;user id=root;password=;database=test;allow zero datetime=true;”

这里与sqlserver连接字符串相区别的是:

user->user id,

当然估计没有下载MySql.Data.dll所以在

http://dev.mysql.com/downloads/connector/net/5.2.html下载

然后在net工程里添加引用,找到刚才你下载MySql.Data.dll的压缩包,解压后,在bin目录下有MySql.Data.dll.

添加成功后,在你的代码里添加一个

using MySql.Data.MySqlClient;

然后下面的和SqlClient的效果是一样的。只不过前面多了"My"

下面看具体的代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data;
  5. using MySql.Data.MySqlClient;
  6. namespace SqlConnect
  7. {
  8.     /// <summary>
  9.     /// author: chico chen
  10.     /// date: 2008-11-02
  11.     /// </summary>
  12.     public class SqlAccess
  13.     {
  14.         private MySqlConnection conn = null;
  15.         private MySqlCommand cmd = null;
  16.         /// <summary>
  17.         /// 建立与数据库的连接
  18.         /// </summary>
  19.         /// <returns></returns>
  20.         private MySqlConnection CreateConn()
  21.         {
  22.             string strConn = System.Configuration.ConfigurationSettings.AppSettings["Restaurant"].ToString(); 
  23.             // SqlConnection 对象
  24.             conn = new MySqlConnection(strConn);
  25.             try
  26.             {
  27.                 conn.Open();
  28.                 return conn;
  29.             }
  30.             catch (Exception e)
  31.             {
  32.                 Console.WriteLine("sql 连接未打开");
  33.                 return null;
  34.             }
  35.         }
  36.         /// <summary>
  37.         /// 关闭与数据库的连接
  38.         /// </summary>
  39.         private void CloseConn()
  40.         {
  41.             try
  42.             {
  43.                 conn.Close();
  44.             }
  45.             catch (Exception e)
  46.             {
  47.                 Console.WriteLine("sql 连接未关闭");
  48.             }
  49.         }
  50.         /// <summary>
  51.         /// 查询数据库
  52.         /// </summary>
  53.         /// <param name="sql">类似于SELECT * FROM [User];</param>
  54.         /// <returns></returns>
  55.         public DataSet SelectDataSet(string sql)
  56.         {
  57.             CreateConn();
  58.             MySqlDataAdapter sda = new MySqlDataAdapter(sql, conn);
  59.             DataSet ds = new DataSet();
  60.             sda.Fill(ds);
  61.             CloseConn();
  62.             return ds;
  63.         }
  64.         /// <summary>
  65.         /// 执行无返回值的sql语句,如果成功返回true,失败返回false;
  66.         /// </summary>
  67.         /// <param name="sqlcmd">类似于UPDATE [USER] SET userID=@userIDC  WHERE userID=@userID
  68.         /// 或delete from [user] where userID=@userID;
  69.         /// 或者insert into [user] (userID, password, name) values (@userID,@password,@Name) ;</param>
  70.         /// <param name="sqlPara">
  71.         ///  SqlParameter[] sp = new SqlParameter[3];   
  72.         ///  sp[0] = new SqlParameter(user, SqlDbType.VarChar, 50);
  73.         /// sp[0].Value = "www";
  74.         /// </param>
  75.         /// <returns></returns>
  76.         public bool EXESql(string sqlcmd, MySqlParameter[] sqlPara)
  77.         {
  78.             try
  79.             {
  80.                 CreateConn();
  81.                 cmd = new MySqlCommand();
  82.                 cmd.Connection = conn;
  83.                 cmd.CommandType = CommandType.Text;
  84.                 cmd.CommandText = sqlcmd;
  85.                 foreach (MySqlParameter sp in sqlPara)
  86.                 {
  87.                     cmd.Parameters.Add(sp);
  88.                 }
  89.                 cmd.ExecuteNonQuery();
  90.                 CloseConn();
  91.                 return true;
  92.             }
  93.             catch (Exception e)
  94.             {
  95.                 return false;
  96.             }
  97.         }
  98.     }
  99. }

这里调用的代码这样写:

DataSet ds = sqlAccess.SelectDataSet("select * from user");

当然如果你使用DataSet还要加using System.Data;

连接字符串中为什么要加Allow Zero datetime  = true是因为在添加数据库数据时,

添加了错误的dateTime数据,所以mysql自动将其转为0000-00-00 00:00:00,所以在

DataSet ds = new DataSet();
 sda.Fill(ds);

这里就会报异常,原因是不支持这种Date/Time。

要使用刚才的接口的话:

  1.       {
  2.            DataSet ds = sqlAccess.SelectDataSet("select * from user");
  3.             
  4.             Array alist = ds.Tables[0].Rows[0].ItemArray;
  5.             foreach(object o in alist)
  6.             {
  7.                 label1.Text += o.ToString();
  8.             }
  9.             UpdateName();
  10.        }
  11.        
  12.        private const string sql ="UPDATE USER SET userName=@userName  WHERE userID=@userID";
  13.         private const string userName = "@userName";
  14.         private const string userID = "@userID";
  15.      private void UpdateName()
  16.         {
  17.             int i = 1;
  18.             string name = "xxxx";
  19.             MySqlParameter[] my =
  20.             {
  21.                 new MySqlParameter(userName,MySqlDbType.String),
  22.                 new MySqlParameter(userID,MySqlDbType.Int32)
  23.             };
  24.             my[0].Value = name;
  25.             my[1].Value = i;
  26.             label2.Text = sqlAccess.EXESql(sql, my).ToString();
  27.         }

抱歉!评论已关闭.