Thứ Sáu, 13 tháng 12, 2013

Kết nối CSDL MySql trong C#

Đây là 1 VD minh họa đơn giản việc kết nối MySQL trong C#. Để kết nối với các hệ CSDL khác bằng ADO.NET ( Microsoft SQL Server , Oracle, Microsoft acess) thì có khá nhiều giáo trình đề cập đến rồi nên mình sẽ không nói thêm nữa. Hi vọng bài viết này sẽ giúp ích cho các bạn.
Để kết nối với CSDL các bạn sử dụng file connector của MySQL tải tại đây
Tạo một CSDL bằng MySQL, các bạn có thể cài đặt trọn bộ webserver(trong đó có sẵn MySQL) , ở đây mình sẽ dùng gói xampp-win32 (Server:Localhost, Database:temp , user:root/pass=””).
Tạo project mới, sau đó vào Project/Add reference…. Và Add file MySQL.Data.DLL vừa mới tải về vào project.
Sử dụng lớp MySql.Data.MySqlClient:
using MySql.Data.MySqlClient;
Khai Báo một Connection String:
string MyConString = “SERVER=localhost;” +
“DATABASE=temp;” +
“UID=root;” +
“PASSWORD= ; ” ;

Dạng đầy đủ của Connection String:
Connection String : “Server=hostname;” + “Database=database;” “Port=3306;”+ “User ID=username;” + “Password=password;” + “Pooling=false”

Server :Hostname hoặc IP của MySQL server.
Database: tên của CSDL. (Vd này mình dặt là ‘temp’)
Port: TCP/IP Port để kết nối (mặc dịnh là 3306).
User ID: user (Vd:root).
Password: pass.
Pooling: YES hoặc TRUE để sử dụng kết nối lấy từ pool , NO hoặc FALSE kết nối không lấy từ pool(mặc dịnh là TRUE (YES)).
Connection – pooling là gì?
Trích dẫn:
Quote
Connection-pooling làm giảm đáng kể tổng phí liên hợp với việc tạo và hủy kết nối cơ sở dữliệu. Connection-pooling cũng cải thiện tính quy mô của các giải pháp bằng cách giảm số lượng kết nối đồng thời mà một cơ sở dữ liệu phải duy trì—đa số thường “ngồi không” suốt một phần đáng kể thuộc thời gian sống của chúng. Với connection-pooling, thay vì tạo và mở một đối tượng kết nối mới mỗi khi cần, bạn có thể lấy kết nối đã mở từ pool. Khi bạn đã hoàn tất việc sử dụng kết nối, thay vì đóng nó, bạn trả nó về cho pool và cho phép đoạn mã khác sử dụng nó.
Theo mặc định, SQL Server và Oracle Data Provider cung cấp chức năng connection-pooling. Một pool sẽ hiện diện đối với mỗi chuỗi kết nối do bạn chỉ định khi mở một kết nối mới. Mỗi khi bạn mở một kết nối mới với chuỗi kết nối đã được sử dụng qua, nó sẽ được lấy từ pool hiện có. Chỉ khi bạn chỉ định một chuỗi kết nối khác thì data-provider mới tạo một pool mới.
Bạn có thể điều khiển các đặc tính của pool bằng cách sử dụng các thiết lập trong chuỗi kết
nối .
Tạo kết nối:
Vd:
Quote
MySqlConnection con = new SqlConnection(MyConString);
MySqlCommand com = con.CreateCommand();
MySqlDataReader reader;
Nhập lệnh SQL:
Quote
com.CommandText = “select * from login”;
Mở kết nối:
vd:
Quote
con.Open();
Thực hiện lệnh:
vd:
Quote
reader = com.ExecuteReader();
Lấy kết quả trả về (ở đây mình sẽ sử dụng listbox) :
Quote
while (reader.Read())
{
string thisrow = “”;
for (int i = 0; i < reader.FieldCount; i++)
thisrow += reader.GetValue(i).ToString() + “,”;
listBox1.Items.Add(thisrow);
}
Code tham khảo:
Quote
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string MyConString = “SERVER=localhost;” +
“DATABASE=temp;” +
“UID=root;” +
“PASSWORD= ; ” ;
MySqlConnection con = new MySqlConnection(MyConString);
MySqlCommand com = con.CreateCommand();
MySqlDataReader reader;
com.CommandText = “select * from login”;
con.Open();
reader = com.ExecuteReader();
while (reader.Read())
{
string thisrow = “”;
for (int i = 0; i < reader.FieldCount; i++)
thisrow += reader.GetValue(i).ToString() + “,”;
listBox1.Items.Add(thisrow);
}
con.Close();
}
}
}

Không có nhận xét nào:

Đăng nhận xét