Hướng dẫn kết nối java với SQL server

1. Kết nối thông qua ODBC


a. Dùng Data Source Name

Thiết lập DataSource như sau :

Trên windows Vào menu Start->Settings->Control Panel->Administrative Tools->Data Sources (ODBC), kết quả như hình
jdbc_sqlserver_01.png

 

Nhấn Nút Add, Tìm đến SQL Server, Nhấn Finish.

Nhập vào tên của Data Source, ví dụ là MyDSN, chọn server: nếu server ở localhost thì có thể gõ vào dấu ., nếu có nhiều instances của sqlserver thì phải gõ vào tên_máy_tính/tên_instance. Nhấn Next 2 lần

Chọn Database cần nối:
jdbc_sqlserver_02.png


Nhấn Next, Nhấn Finish.


 

Nhấn nút “Test Data Source” để kiểm tra kết nối, nếu thành công sẽ hiển thị dòng “TEST COMPLETED SUCCESSFULLY!” Nhấn OK để kết thúc. Ta cần ghi nhớ tên của DSN.

Code để kết nối đến SQL server sử dụng data source như sau:






package vovanhai.wordpress.com; 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class ConnectODBC_DSN {

private Connection con=null;

public ConnectODBC_DSN() throws Exception{

String url=”sun.jdbc.odbc.JdbcOdbcDriver”;

Class.forName(url);

String dbUrl=”jdbc:odbc:myDSN”;

con=DriverManager.getConnection(dbUrl);

}

/**

* Lấy danh sách các mẫu tin của bảng CSDL

@param tableName: tên bảng cần lấy các dòng

@return danh sách các dòng được lưu trong 1 ResultSet

@throws SQLException

*/

public ResultSet GetResultSet(String tableName)throws SQLException {

ResultSet rs=null;

Statement stmt=con.createStatement();

String sql=”select * from “+tableName;

rs=stmt.executeQuery(sql);

return rs;

}

public void Close()throws Exception{

con.close();

}

//Thử chương trình

public static void main(String[] args) {

try {

ConnectODBC_DSN conDSN=new ConnectODBC_DSN();

ResultSet rs=conDSN.GetResultSet(“EmployeeInfo”);

while(rs.next()) {

System.out.println(rs.getString(“EmpName”));

}

conDSN.Close();

catch (Exception e) {

e.printStackTrace();

}

}

}

b. Dùng chuỗi kết nối

Ở đây việc kết nối đến SQL Server cũng thông qua ODBC nhưng chúng ta không cần phải khai báo DSN, ta có thể dùng chuỗi kết nối trực tiếp thông qua ODBC để nối đến SQL Server.  Chuỗi kết nối có dạng

String dbUrl=”jdbc:odbc:Driver={SQL Server};Server=.;DatabaseName=Employee;UserName=sa;Password=”;

Lưu ý với thuộc tính Server: nếu chỉ có 1 server trên máy local thì dùng dấu chấm hoặc chỉ rõ tên máy hoặc IP address. Nếu trên máy có nhiều instance của sql server thì phải chỉ định rõ dùng instance nào. Ví dụ trên máy cài instance có tên SQLEXPRESS thì Server phải là: Server=ComputerName/InstanceName

Code kết nối như sau :






package vovanhai.wordpress.com; 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class ConnectODBC_ConString {

private Connection con=null;

public ConnectODBC_ConString() throws Exception{

String url=”sun.jdbc.odbc.JdbcOdbcDriver”;

Class.forName(url);

String dbUrl=”jdbc:odbc:Driver={SQL Server};Server=.;Database=Employee;UserName=sa;Password=”;

con=DriverManager.getConnection(dbUrl);

}

}

2. Kết nối trực tiếp dùng driver


Ở đây việc kết nối thông qua 1 driver do nhà cung cấp hệ quản trị csdl hoặc 1 hãng trung gian thứ 3 cung cấp. Có rất nhiều driver khác nhau có thể làm việc với SQL server nhưng ở đây tôi muốn đề cập đến driver của microsoft. Bạn có thể download nó tại đây.

Sau khi download về, bạn giải nén ra 1 thư mục bất kỳ, giả sử là C:\javaSoft\mssqlJDBCDriver. Bạn chú ý đến tập tin sqljdbc.jar. Copy tập tin này vào project của bạn để có thể sử dụng cho project đó hoặc bạn copy nó vào thư mục %JAVA_HOME%\jre\lib để có thể sử dụng cho tất cả các project có trong máy của bạn.

Bây giờ bạn có thể viết code kết nối như sau






package vovanhai.wordpress.com; 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class ConnectWithDriver {

private Connection con=null;

public ConnectWithDriver()throws Exception {

Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

String url=”jdbc:sqlserver://localhost:1433;databaseName=Employee”;

con=DriverManager.getConnection(url,”sa”,”");

}

}

3. Kết nối dùng driver thông qua Application Server

Ví dụ ở đây tôi dùng Jboss 4.2.3GA

Bạn phải tạo 1 file có tên mssql-ds.xml trong thư mục %JBOSS-HOME%\ server\default\deploy\  có nội dung như sau






 

 

 

MyDSJNDI_Name

 

jdbc:sqlserver://localhost:1433;databaseName=Tên_CSDL_của_bạn

 

 

com.microsoft.sqlserver.jdbc.SQLServerDriver

 

sa

 

 

MS SQLSERVER2000

 

 

 

Copy sqljdbc.jar vào thư mục mục %JBOSS-HOME%\ server\default\lib.

Start server và bạn có thể dùng JNDI để lookup như sau:






package vovanhai.wordpress.com; 

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.sql.DataSource;

public class Connect_JNDI {

private Connection con=null;

public Connect_JNDI() throws Exception{

DataSource ds=null;

Context ctx=new InitialContext();

ds=(DataSource)ctx.lookup(“java://MyDSJNDI_Name”);

con=ds.getConnection();

}

}

Download chương trình demo trên môi trường Eclipse Ganymede tại đây.
 



Tạo Database trong MySQL

Bạn có thể dùng MySQL command-line, hoặc tool MySQLQueryBrowser, hoặc tool MySQLAdministrator để tạo 1 database có tên là test1.

Tạo database project với Eclipse

Trong Eclipse, vào menu Window->Open Perspective, chọn Other

 
jsfejb

 

Chọn Database Development. Nhấn OK. Layout của eclipse sẽ đổi và phía bên trái của ta có cửa sổ Data Source Explorer thay vì Project Explorer.

 
jsfejb

 

Nhấn phải chuột lên mục Databases, chọn New. Cửa sổ sau xuất hiện

 

 
jsfejb

 

Chọn mục MySQL, gõ tên của Connection Profile là « CustomersDB_profiles ». nhấn Next, gõ vào các thông tin cần thiết như hình.

 
jsfejb

 

Bạn có thể nhấn nút Test Connection để đảm bảo rằng kết nối của bạn thành công trước khi tiếp tục làm việc tiếp. Nhấn Finish để kết thúc việc tạo database project. Kết quả trong Data Source Explorer như sau

 
jsfejb

 

Bạn tạo bảng mới trong database vừa tạo bằng cách nhấn phải chuột lên mục Tables trong Data Souce Explorer của database vửa tạo rồi chọn “New Table”. Theo wizard bạn tạo bảng để có kết quả như câu query sau:






CREATE TABLE customers (

id INT NOT NULL,

name VARCHAR(255),

PRIMARY KEY (id)

);

Kết quả hoàn tất:

 
jsfejb

 

OK. Bây giờ phần Database đã hoàn tất, bạn có thể tạo 1 EJB project được rồi đấy.

 

Tạo EJB Project (làm Business Logic)

Bạn quay lại JavaEE Perspective bằng cách vào menu Window->Open Perspective->Others, chọn Java EE.

Vào menu File->New->Others, chọn mục EJB->EJB Project.

Đặt tên Project là FirstJPAProject.

Mục Target runtime chọn Jboss4.2.2 (nếu chưa có bạn phải cấu hình 1 cái bằng cách nhấn nút New bên cạnh). EJB Module version chọn 3.0.

Trong mục Configuration, nhấn nút Modify. Chọn “Java Persistence 1.0” như hình

 
jsfejb

 

Nhấn OK.

Nhấn Next 2 lần, cửa sổ sau xuất hiện

 
jsfejb

 

Đảm bảo bạn chọn đúng như hình. Nhấn Finish để hoàn tất bước này.

 

Tạo Entity

Bây giờ chúng ta sẽ dùng wizard “Generate Entities” để sinh ra JPA entity từ bảng cơ sở dữ liệu của chúng ta.

Nhấn phải chuột lên project JPA của chúng ta, chọn đến mục “JPA Tools->Generate Entities…”. Cấu hình như hình sau:

 
jsfejb

 

Nhấn Next. Trong package gõ vovanhai.wordpress.jpa và trong Tables nhớ check vào bảng customers như hình.

 
jsfejb

 

Nhấn Finish. Chúng ta sẽ có lớp Customers trong gói vovanhai.wordpress.jpa. Nhưng mọi thứ dường như có lỗi. Hãy an tâm! Chúng ta cần phải chuyển perspective cho nó và fix lỗi này bằng cách:

Vào menu Window->Open Perspective, chọn Other sau đó chọn JPA. Eclipse sẽ chuyển layout sang JPA. Ở góc dưới của màn hình bên phải ta thấy bảng sau xuất hiện và bạn sẽ cấu hình như hình sau

 
jsfejb

 

Good! Lưu file Customers.java, mọi lỗi sẽ được giải quyết!.

Có lẽ chúng ta nên đổi tên lớp từ Customers lại thành Customer bởi theo chuẩn thì tên lớp không thể ở dạng số nhiều bằng cách chọn tên lớp Customers, nhấn tổ hợp phím Alt-Shift-R sau đó bỏ chữ s rồi nhấn Enter. Sau đó ta phải đổi annotation của lớp lại như sau:






 

@Entity

@Table(schema=“test1″, name=customers”)

public class Customer implements Serializable {

//…

}

Bạn có thể hiệu chỉnh lớp này lại theo ý mình, chẳng hạn tôi thêm vào annotation cho phép id tự động tăng khi thêm 1 mẫu tin. Code hoàn chỉnh như sau:






package vovanhai.wordpress.jpa;

 

import java.io.Serializable;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;

 

@Entity

@Table(schema=“test1″, name=“customers”)

public class Customer implements Serializable {

@Id

@GeneratedValue(strategy=GenerationType.IDENTITY)

private int id;

 

private String name;

 

private static final long serialVersionUID = 1L;

 

public Customer() {

super();

}

 

public Customer(String name) {

this.name=name;

}

 

public int getId() {

return this.id;

}

 

public void setId(int id) {

this.id = id;

}

 

public String getName() {

return this.

 

Post a Comment

Mới hơn Cũ hơn