C#訪問MySQL數據庫(winform+EF)


以前都是C#連接SQLServer,現在MySQL也比較火了,而且是開源跨平台的,這里連接使用一下,主要是體會一下整個流程,這里使用的是winform 訪問MYSQL,當然使用winfrom,還是wfp,以及其他的技術這里不討論,個人覺得這個比較上手快。

http://jingyan.baidu.com/article/642c9d34aa809a644a46f717.html

1、安裝MYSQl數據庫,這里略過,可以參考此文檔進行安裝。

 

此文檔已經比較細致了,安裝並不復雜,主要是下一步下一步就行了,要會基本的配置,這里我的數據庫用戶名還是sa(建議自己建立一個用戶),root的用戶名和密碼我們這里暫不使用。

2、連接MYSQL數據庫,可以采用自帶的MySQL Workbench 6.2 CE工具

                      

登錄后就可以進行建表等操作了,這里我建立一個數據庫名稱為MY_OA的數據庫,我們直接使用SQL語句執行並建立數據庫然后刷新列表就可以查看到我們建立的數據庫了

如圖(1)(2)(3)(4)對應的步驟,另外建立了數據庫后還需要建立幾張表來存儲數據,這些都是基礎的和SQLserver大同小異的。


腳本如下:

1 CREATE database My_OA
2 
3 CREATE TABLE my_oa.sys_user
4 (
5 id INT not NULL AUTO_INCREMENT PRIMARY KEY,
6 userName varchar(32),
7 pwd varchar(32)
8 
9 );

 

 當然也可以使用圖形界面來配置,直接鼠標右鍵來建表,主要是看個人的習慣了,熟悉的話直接SQL句會方便很多也比較快,

這里我們快速的插入三條數據,便於以后測試使用,因為ID是自增的,所以可以不用管,插入后你會發現ID已經自己有了,只是MYSQL中AUTO_INCREMENT和SQLSEVE的identity的區別

1 INSERT INTO sys_user(userName,pwd) VALUES('51diysoft','123');
2 
3 INSERT INTO sys_user (userName,pwd) VALUES('xmd','123');
4 
5 INSERT INTO sys_user (userName,pwd) VALUES('hjk','123');

 

當然說道這里我們還可以使用VS2013來連接MYSQL數據庫,因為后邊的EF框架要訪問,肯定也能夠連接吧,

我們打開VS的【視圖】【服務器資源】,點到【數據庫連接】右鍵添加“數據庫”,然后就和正常連接SQLServer的步驟一樣了

此處選擇MYSQL就行了,正常情況下安裝MYSQL的時候就會把VS對應的連接驅動等相關內容直接加入的,不用去手動加的,當然看到這里也是可以連接Oracel數據庫的,紅線標記的地方,道理應該類似。

下邊需要服務器的地址,用戶名和密碼,最好測試能夠連接通過,我這里是sa用戶(注意不是默認的),是自己建立的一個用戶,默認的是root,如果需要root來登錄服務器的話必須在安裝MYSQL的時候注意勾選,否則就要新建一個用戶來操作。

 

 

這里數據已經有了,另外我們還可以使用SQLdbx、Navicat_Premium_11.0.10等數據庫的客戶端工具來連接,這工具智能提示比較強,而且體積小便於攜帶和維護

下面我們就以SQLdbx為例,講解一下如何連接數據庫,其實都是一樣的連接,如下:

SQldbx的下載地址和本次的SQl腳本例子可以到百度雲下載:

 

第一步:

需要選擇連接的數據庫類型(MYSQL),這里也是可以連接其他類型數據庫的,自己看吧,也可以試試

第二步:

也是輸入用戶名和密碼連接就行了。

數據庫可以為空,等登陸后再選擇數據庫也可以。

另外我們對比一下數據庫表的復制,SQLServer我們直接可以這樣復制(在select * from 表)的中間加入一個into 新表:

SELECT * INTO sys_user3 FROM sys_user

而在MYSQL中我們直接這樣寫是報錯的:只有傳統的建表再導數據了,比如

CREATE TABLE test
(
SELECT * FROM sys_user
)

 

,二期默認生成的這個id不會自動增長的,需要注意一下,我們主要是為了備份表的數據。

不同的數據庫肯定有些小區別,慢慢研究吧。

3、如何使用VS2013建立MYSQL的項目(這里講winform吧)

  上邊講的有點多了,趕緊的

(1)、VS【文件】=》【新建】=》【項目】略過,注意選擇對應的項目類型默認有winform和asp .net的自己選擇,另外我們還需要選擇EF的版本,

如何對Entity Framework沒啥感覺,沒關系,簡單來說就是微軟幫你連接了數據庫的是一個實體框架,讓你操作起來比較方便,不用過多去寫SQLhelper並能和linq語句lamda表達式等結合起來,提高開發效率,這個是比較實用的。

參考介紹:

http://baike.baidu.com/link?url=jDHhtM4QGOpQJmgY9bCe24VJy4kgKAvsuRHJgGmuXlGilJ7lmVVzQkoVMX9KlYCmdagGACDm8042dQnR-E6_nq

 

另外還要說明的是EF的版本,我這里使用的是EF6,可以通過nuget工具包管理來獲得最新版本

 

以下是建立VS項目的步驟截圖:

以上步驟首先是新建一個MYSQL的連接,然后選擇對應的表生成對應的EF實體框架,這樣一個EF的winform項目基本就建立好了。

 

4、查看winfrom項目結構

打開對應的*.tt文件,這些就是EF自動生成的連接數據庫后的相關實體類,就不用自己去建立類了(必要時需要自己建立Vew_Sys_User)

namespace MySql_Windows_Forms_Project2
{
using System;
using System.Collections.Generic;

public partial class sys_user
{
public int id { get; set; }
public string userName { get; set; }
public string pwd { get; set; }
}
}

然后我們還是調用一下EF生成的實體吧,做一個簡單的登錄頁面和系統主頁。

 

5、登錄頁面的實現

winform如何制作登錄頁面,基本流程就是拖動幾個lable和textbox,並設置基本的屬性,比如密碼框為星號,窗口的起始位置為CenterScreen,是否最小化等等

我們就大概看一下代碼吧,很簡單的,使用的部分Linq的查詢,結合EF框架操作,比較方便

(主要是體會流程,沒有任何美化)

 1      // 獲取輸入的用戶名和密碼
 2             using (MyOAModelEntities db = new MyOAModelEntities())
 3             {
 4                 string strUserName = txtUserName.Text.Trim();
 5                 string strPwd = txtPwd.Text.Trim();
 6                 //查詢數據庫中的記錄
 7                 var userinfo = (from m in db.sys_user
 8                                 where m.userName == strUserName && m.pwd == strPwd
 9                                 select m).FirstOrDefault(); 
12                 if (userinfo != null)
13                 {
14                     CurrentUserInfo = userinfo;//標記全局的用戶 方便其他地方使用
15                     //  MessageBox.Show("登錄成功!");
16                     this.Hide();
17                     MainWindow m = new MainWindow();
18                     m.ShowDialog();
19                 }
20                 else
21                 {
22                     MessageBox.Show("用戶名或者密碼錯誤!");
23                 }

 

 Code下載地址:

http://pan.baidu.com/s/18n54i

以后將繼續學習MYSQL數據庫,另外個人在研究C#  Mono for安卓,有興趣的友友可以一起討論,互勉!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM