Cách Tạo Truy Vấn Và Các Kiểu Truy Vấn

public class TestConnection { private Connection con;

public TestConnection() throws ClassNotFoundException, SQLException{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url="jdbc:odbc:Driver={SQL Server};

Server=VINHVU-PC\SQLEXPRESS;Database=JDB;UserName=sa;Password=123456"; this.con=DriverManager.getConnection(url);

}

public ResultSet GetData(String tbName) throws SQLException{ ResultSet kq = null;

Statement statement = this.con.createStatement(); String sql = "select * from Products"; kq=statement.executeQuery(sql);

return kq;


}

Có thể bạn quan tâm!

Xem toàn bộ 232 trang tài liệu này.

public void Close() throws SQLException{ if (this.con!=null)

this.con.close();


}

public static void main(String[] args) throws ClassNotFoundException, SQLException {

TestConnection pt = new TestConnection(); pt.UpdateDetail("Products");

ResultSet rs = pt.GetData("Products"); while (rs.next()){

System.out.print(rs.getString("ID")+""+rs.getString("Name")+" "+rs.getString("Number"));

System.out.println("");


}

pt.Close();

}}

Sau khi biên dịch, dữ liệu trong bảng Products được hiển thị ra màn hình :

Ví dụ 6 2 Một ví dụ khác về cách kết nối đến CSDL trên SQLSERVER package 1

Ví dụ 6.2: Một ví dụ khác về cách kết nối đến CSDL trên SQLSERVER

package connectmysqldata; import java.sql.*;

public class ConnectMysqlData {

public static void main(String[] args) throws ClassNotFoundException { Connection conn = null;

try

{

String userName = "root"; // user dang nhap vao MySQl String passWord = "1amclney"; // password dang nhap vao MySql

String url = "jdbc:mysql://127.0.0.1:3306/qlsv"; Class.forName ("com.mysql.jdbc.Driver").newInstance();

conn = DriverManager.getConnection(url,userName,passWord);

//System.out.println("ke noi CSDl."); Statement s = conn.createStatement(); String sql = "SELECT * FROM sinhvien";

ResultSet rs = s.executeQuery(sql); while (rs.next()) {

String name = rs.getString("ht"); int ns = rs.getInt("ns");

String que = rs.getString("que");

System.out.println("Ho ten:"+name + " Nam Sinh : "+ ns + Que : " + que);

}

rs.close();

s.close();

conn.close(); System.out.println("ngăt ket noi.");

}

catch (Exception e){ e.printStackTrace();

}

finally{

if(conn !=null){ try{

conn.close();

}

catch(Exception e){

// Bo qua loi luc dong CSDL.

}

}

}

}

Ví dụ 6.3: Cách kết nối CSDL oracle (kiểu 1)

import java.sql.*; class DBOracle1

{

public static void main(String args[])throws ClassNotFoundException, SQLException

{

try{

//Co the dung lenh nay de tai driver Class.forName("oracle.jdbc.OracleDriver");

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

//Lien ket toi co so du lieu

Connection conn = DriverManager.getConnection("jdbc:oracle:oci8:@HOAN", "scott", "tiger");

Statement stmt = conn.createStatement( );

ResultSet rset = stmt.executeQuery("select empno, ename from emp"); ResultSetMetaData rst=rset.getMetaData();

int numcol=rst.getColumnCount();

System.out.println("So cot cua bang la:"+numcol); System.out.println("Schema Name:" + rst.getTableName(1));

for(int i=1;i<numcol+1;i++) System.out.println(rst.getColumnName(i)+"

"+rst.getColumnTypeName(i));

while(rset.next( ))

{

System.out.println(rset.getString("empno")); System.out.println(rset.getString("ename"));

}

rset.close( );

stmt.close( );

conn.close( );

}

catch(Exception e)

{

System.err.println("Ex : "+e);

}

}

}

6.5. Cách tạo truy vấn và các kiểu truy vấn

Các thao tác truy vấn CSDL chỉ có thể được thực hiện sau khi đã có đối tượng Connection, được tạo ra từ quá trình kết nối vào CSDL. Chúng ta sử dụng đối tượng của lớp Connection để tạo ra các thể hiện của lớp Java.sql.Statement. Sau khi tạo ra các đối tượng của lớp Statement thực hiện các thao tác trong các đối tượng statement trên connection tương ứng.

Nội dung trong một statement chính là các câu SQL. Câu lệnh SQL trong các statement chỉ được thực hiện khi gửi chúng đến CSDL. Nếu câu lện SQL là một câu truy vấn nội dung thì kết quả trả về sẽ là một thể hiện của lớp Java.sql.ResultSet, ngược lại (các câu lệnh thay đổi nội dung CSDL) sẽ trả về kết quả là mộ số nguyên. Các đối tượng của lớp ResultSet cho phép truy cập đến kết quả trả về của các câu truy vấn.

Các lớp cơ bản

Java.sql.Statement

Statement là một trong 3 lớp JDBC cơ bản dùng để thể hiện một câu lệnh SQL. Mọi thao tác trên CSDL được thực hiện thông qua 3 phương thức của lớp Statement. Phương thức executeQuery() nhận vào 1 tham số là chuỗi nội dung câu lện SQL và trả về 1

đối tượng kiểu ResultSet. Phương thức này được sử dụng trong các trường hợp câu lệnh SQL có trả về các kết quả trong CSDL.

Phương thức executeUpdate() nhận vào 1 tham số là chuỗi nội dung câu lệnh SQL. Tuy nhiên phương thức này chỉ sử dụng được đối với các câu lệnh cập nhật nội dung CSDL. Kết quả trả về là số dòng bị tác động bởi câu lệnh SQL.

Phương thức execute() là trường hợp tổng quát của 2 phương thức trên. Phương thức nhận vào chuỗi nội dung câu lệnh SQL. Câu lệnh SQL có thể là câu lệnh truy vấn hoặc cập nhật. Nếu kết quả của câu lệnh là các dòng trong CSDL thì phương thức trả về giá trị true, ngược lại trả về giá trị false. Trong trường hợp giá trị true, sau đó có thể dùng phương thức getResultSet() để lấy các dòng kết quả trả về.

Java.sql.ResultSet

Đối tượng resultset là các dòng dữ liệu trả về của câu lệnh truy vấn CSDL. Lớp này cung cấp các phương thức để rút trích các cột trong từng dòng kết quả trả về. Tất cả các phương thức này đều có dạng:

type getType(int | String)

Trong đó tham số có thể là số thứ tự của cột hoặc tên cột cần lấy nội dung.

Tại 1 thời điểm chỉ có thể thao tác trên 1 dòng của resultset. Để thao tác trên dòng tiếp theo sử dụng phương thức next(). Phương thức trả về giá trị true trong trường hợp có dòng tiếp theo, ngược lại trả về giá trị false

Ví dụ 6.4: Xây dựng lớp TestConnection.

package testconnection; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestConnection {

private Connection con;

public TestConnection() throws ClassNotFoundException,SQLException{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url="jdbc:odbc:Driver={SQL Server};

Server=VINHVU-PC\SQLEXPRESS;Database=JDB;UserName=sa;Password=123456"; this.con=DriverManager.getConnection(url);

}

public ResultSet GetData(String tbName) throws SQLException{ ResultSet kq = null;


Statement statement = this.con.createStatement();

String sql = "select * from Products"; kq=statement.executeQuery(sql); return kq;

}

public void Update(int id,String name,int number) throws SQLException{ Statement sta = this.con.createStatement();

String sql1 ="Update Products set Name='"+name+"' where ID ="+id+"";


String

="+id+"";

sql2

="Update Products set Number="+number+" where ID


sta.executeUpdate(sql1);

sta.executeUpdate(sql2);

}

public void Insert(int id,String name,int number) throws SQLException{ Statement sta = this.con.createStatement();

String sql1 = "Insert Products values("+id+",'"+name+"',"+number+")";

sta.executeUpdate(sql1);

}

public void Delete(int id) throws SQLException{ Statement sta = this.con.createStatement(); String sql ="delete Products where ID ="+id+""; sta.executeUpdate(sql);

}

public void Close() throws SQLException{ if (this.con!=null)

this.con.close();

}


Để quản lý CSDL tạo một JFrame như sau :

Các jButton btnGetdata btnCapnhat btnThem btnXoa btnThoat Các jTextfield txtid txtname txtnumber 2

- Các jButton: btnGetdata, btnCapnhat, btnThem, btnXoa, btnThoat

- Các jTextfield: txtid, txtname, txtnumber

- jTable: tbSP

Để hiển thị CSDL từ bảng Products ra tbSP, viết sự kiện Click cho jButton btnGetdata như sau:

private void btnGetdataMouseClicked(Java.awt.event.MouseEvent evt)

{

tblSP.removeAll(); try {

TestConnection pt = new TestConnection(); ResultSet rs = pt.GetData("Products"); int i=0;

while (rs.next()){ tblSP.setValueAt(rs.getString("ID"), i, 0);

tblSP.setValueAt(rs.getString("Name"), i, 1);

tblSP.setValueAt(rs.getString("Number"), i, 2); i++;

}

pt.Close();

} catch (ClassNotFoundException ex) { Logger.getLogger(FrameConnection.class.getName()).log(Level.SEVERE,

null, ex);

} catch (SQLException ex) {

Logger.getLogger(FrameConnection.class.getName()).log(Level.SEVERE, null, ex);

} }

Dữ liệu được hiển thị như sau:

Cập nhật CSDL Phương thức Update được định nghĩa trong lớp TestConnection public 3

Cập nhật CSDL

Phương thức Update() được định nghĩa trong lớp TestConnection:

public void Update(int id,String name,int number) throws SQLException{ Statement sta = this.con.createStatement();

String sql1 ="Update Products set Name='"+name+"' where ID ="+id+""; String sql2 ="Update Products set Number="+number+" where ID ="+id+"";

sta.executeUpdate(sql1); sta.executeUpdate(sql2);

}

Ví dụ 6.5: Để cập nhật CSDL ta viết sự kiện cho jButton btnCapnhat như sau.

private void btnCapnhatMouseClicked(Java.awt.event.MouseEvent evt) { try {

TestConnection pt = new TestConnection();

pt.Update(Integer.parseInt(txtid.getText()),txtname.getText(),Integer.parseI nt(txtnumber.getText()));

pt.Close();

} catch (ClassNotFoundException ex) { Logger.getLogger(FrameConnection.class.getName()).log(Level.SEVERE,

null, ex);

} catch (SQLException ex) {

Logger.getLogger(FrameConnection.class.getName()).log(Level.SEVERE, null, ex);

}

}

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 29/01/2024