.net與mysql串連

來源:互聯網
上載者:User

 首先去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.         }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.