Aug 17, 2012

Cách gọi thủ tục lưu trữ trong Java

Store procedure là một phần không thể thiếu của bất kỳ cơ sở dữ liệu nào, sử dụng store procudure có rất nhiều lợi ích, (có thể tham khảo trên google, khi nào rảnh thì bổ sung)

Có thể phân ra làm 2 nhóm người: nhóm người sử dụng cơ sở dữ liệu, nhóm người thiết kế, triển khai cơ sở dữ liệu, nhóm người thứ nhất không có kiến thức về cách tổ chức cơ sở dữ liệu, họ đặt ra các yêu cầu với nhóm người thứ hai, và nhận lại được một tập các đặc tả về store procedure, cơ sở dữ liệu với họ hoàn toàn là một cái hộp đen, mang đúng nghĩa là một abstract data type, với giao diện là các store procedure. Nhóm người thứ hai thì hiểu rất rõ cơ sở dữ liệu như thế nào, nếu cơ sở dữ liệu quá phức tạp, trưởng nhóm có thể phân chia các quyền và công việc nhỏ hơn với sự giúp đỡ của view.

Bài viết này hướng dẫn nhóm người thứ nhất về cách sử dụng thủ tục lưu trữ trong java.

Giả sử đã có một đối tượng connection, kết nôi thành công đến cơ sở dữ liệu, cơ sở dữ liệu cung cấp đặc tả về một store procedure như sau:

Tên: gfmi
Tác dụng: lấy id của thành viên đầu tiên lưu trữ trong cơ sở dữ liệu.
Tham số:
1. 
tên: id
loại: tham số ra
kiểu: int
tác dụng: chứa kết quả trả về là id của thành viên đầu tiên
Giá trị trả về: không xác định

Tạo đối tượng hỗ trợ giao diện CallableStatement

Việc đầu tiên là phải tạo một đối tượng hỗ trợ giao diện callableStatement từ đối tượng connection

CallableStatement statementmanager = connection.prepareCall( "call gfmi(?)");

tham số của hàm prepareCall có dạng "call xxx(?,?,?,..)"
với xxx là tên hàm cần gọi, theo như đặc tả store procedure ở trên thì là gfmi
liền ngay sau tên là danh sách các tham số, mỗi tham số không cần ghi tên mà chỉ ghi dấu hỏi (?), phân cách nhau bởi dấu phảy (,).

Đăng ký các tham số

Tiếp theo là phải đăng ký tham số:

statementmanager.registerOutParameter( "id", Types.INTEGER );

từ đặc tả có thể dễ dàng suy ra các tham số tương ứng

Gọi hàm

statementmanager.executeQuery();

Lấy kết quả

statementmanager.getInt( "id")

Dưới đây là code tham khảo

try
{
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306","aaaa","aaaa" );
connection.setCatalog( "class");
CallableStatement statementmanager = connection.prepareCall( "call gfmi(?)");
statementmanager.registerOutParameter( "id", Types.INTEGER );
statementmanager.executeQuery();
System.out.println(statementmanager.getInt( "id") );
}
catch ( Exception ex )
{
System.out.printf( "%s", ex.toString() );
}

Aug 16, 2012

Cách kết nối cơ sở dữ liệu mysql với java (netbean)

Download và cài đặt mysql server

Vào trang chủ của mysql, sau đó chọn download bản MySQL Server Community.
trước khi download, trang web sẽ bắt đăng ký, hoàn thành việc đăng ký rổi tải mysql về máy.
Khi cài đặt, nên dùng những cấu hình mặc định như tên server là mysql, cổng giao tiếp là 3306, cho sql server chạy như là một service, ...

Thêm thư viện vào netbean

Nhấn chuột phải vào project, chọn properties, ở mục Libraries, chọn Add Library sau đó chọn MySQL JDBC Driver

Nhấn OK.

Kết nối với cơ sở dữ liệu bằng Java

Chắc chắn rằng đã chạy mysql server

Trước khi kết nối được tạo, phải chạy mysql server, nếu bạn đã chắc chắn mysql server đang chạy thì có thể bỏ qua bước dưới.
Để chạy mysql server, mở cmd dưới quyền admin và gõ lệnh:

net start mysql


hoặc mở power shell dưới quyền admin và gõ lệnh:

(get-service mysql).start()

Import thư viện và đăng ký Driver

Bước tiếp theo là import thư viện:

import java.sql.*;

Việc cần làm tiếp theo đó là đăng ký driver của mysql cho lớp DriverManager, làm điều này bằng cách:

Class.forName("com.mysql.jdbc.Driver");

Lệnh trên sẽ khởi tạo lớp mysql driver, JRE sẽ gọi đến static block trong lớp mysql driver, và đăng ký nó với DriverManager.
Chú ý là chỉ phải đăng ký một lần cho mỗi phiên làm việc.

Tạo kết nối và thử câu lệnh

Nếu làm các bước trên đâu vào đấy rồi thì có thể tạo một kết nối đến cơ sở dữ liệu:

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "mysql");
connection.setCatalog("class"); //kết nối với cơ sở dữ liệu có tên là class

Gõ vài câu truy vấn để thử kết nối:

Statement statementmgr = connection.createStatement();
ResultSet result = statementmgr.executeQuery( "select * from MEMBERINFO" );
result.next();
System.out.println(result.getString( "fullname") );




Aug 14, 2012

Đổi tên cột hay bảng trong cơ sở dữ liệu

MySQL

Để đổi tên một bảng trong mysql mà không làm mất dữ liệu, sử dụng câu lệnh truy vấn SQL

rename table SUN to ORACLE

để đổi tên một cột, dùng câu lệnh:

alter table spacetime change NAME FULLNAME varchar(50);

Microsoft SQL

Để đổi tên một bảng trong ms-sql, phải sử dụng store procedure sp_rename

EXEC sp_renanme 'SUN', 'ORACLE' ;

Để đổi tên một cột, cũng làm tương tự

exec sp_name 'NAME', 'FULLNAME', 'column';

Cách xóa linux khi cài chung với Windows

Khi cài dual boot windows với linux, việc xóa linux không đơn thuần chỉ là format phân vùng đã cấp phát cho linux mà phải sửa lại cả MBR cho windows.

Bản chất vấn đề

Trước tiên phải tham chiếu qua bảng MBR.
AddressDescriptionSize in bytes
HexOctDec
000000000Bootstrap code area440
(max. 446)
01B80670440Disk signature (optional)4
01BC0674444Usually nulls; 0x00002
01BE0676446Table of primary partitions
(Four 16-byte entries, IBM partition table scheme)
64
01FE077651055hMBR signature2
01FF0777511AAh
MBR, total size: 446 + 64 + 2 =512
Khi cài linux, nó sẽ ghi đè một chương trình có tên là GRUB vào 440 byte đầu tiên trong MBR, chương trình này có nhiệm vụ hiển thị tất cả các hệ điều hành trong hệ thống để người dùng chọn vào hệ điều hành nào, tương tự trên windows là khi cài bản XP với Win 7 thì nó hiện ra 2 dòng để chọn, nếu không chọn sau 30 s thì nó chọn tự động ...
Muốn xóa hẳn linux, thì phải sửa lại 440 byte mã như lúc đầu của windows (tức là xóa GRUB đi, ghi chương trình mặc định của windows vào MBR). Đề làm được điều này, có thể sử dụng nhiều công cụ chuyên nghiệp, có giao diện đồ họa như EasyBCD hay Vista Boot Pro, hoặc sử dụng chương trình giao diện dòng lệnh Bootsect của Microsft.
Bootsect là một trong những công cụ của microsft cung cấp cho người sử dụng để sửa lại windows, nó có thể được tìm thấy trong tất cả các đĩa cài đặt windows. Bài này sẽ hướng dẫn chi tiết việc sử dụng Bootsect để sửa lại MBR đã bị ghi đè bởi GRUB

Cách xóa

Đầu tiên phải có được chương trình "bootsect.exe", có thể lấy được nó trên trang chủ của microsft, hay đĩa cài windows (trong thư mục boot).
Chạy chương trình dưới quyền admin, (nhất nút start, gõ cmd. click chuột phải vào cmd rồi chọn Run as Administrator)
Gõ lệnh: bootsect /nt60 SYS /mbr
Mở computer managment bằng cách vào Run (windows+R), gõ: compmgmt.msc
Chọn Disk Managment, nhấn chuột phải vào phân vùng đã cài linux, rồi chọn delete (thông thường đây là tuy chọn duy nhất).

Nhấn chuột phải vào phân vùng đó để tạo lại phân vùng.
Nếu vào được windows thì mọi chuyện trở nên vô cùng dễ dàng

Ngoại lệ

Nếu không đã xóa linux trước khi sửa MBR, phải boot bằng đĩa cài đặt windows, sau đó vào mục repair, chọn mục tương ứng để vào được của sổ consolse. Gõ lệnh:

diskpart
select disk 0
list volume
exit

Nhìn lại xem đâu là ổ đĩa CD, ví dụ ổ F, gõ lệnh:

F:
cd boot
bootsect /nt60 SYS /mbr

bản chất là làm cách gì thì làm, miễn là chạy được bootsect với các tham số như trên

Aug 11, 2012

Sử dụng lệnh cp trong linux

Copy file vào làm con một folder khác

cp <đường dẫn file nguồn> <dường dẫn thư mục cha>

ví dụ:

cp hello.sh Downloads/


Copy một folder vào làm con của một folder khác

cp -r <đường dẫn file nguồn> <dường dẫn thư mục cha>

ví dụ:

cp -r "segoe ui" usr/share/fonts/

Aug 8, 2012

Cài đặt google chrome trên fedora 17 LXDE


[Viết tắt: Linux (lx) ]

Các cách cài đặt

Trên fedora 17, có 3 cách cài đặt chính
  • Cài đặt như windows
  • Dùng Yum Extend

Cài đặt cụ thể

Cài như windows

Lên trang chủ down google chrome về

gõ lệnh sau để cài đặt 

sudo rpm -i Donwloas\google...

Cài đặt bằng Extend

Mở Yumex lên, sau đấy tìm google chrome, tích vào gói cần download (chọn gói nào dung lượng lớn nhất, version mới nhất), sau đó chọn Apply đợi nó cài đặt thôi.

Chú ý

Nếu lx nó hiện thông báo gì gì có chữ "lsb" thì gõ lệnh

sudo yum update lsb

(chịu, chẳng hiểu lsb là gì, đại loại lệnh trên nó update lsb)

Aug 7, 2012

Cách tạo Store procedure với ACCESS (2010)

store procedure là một phần không thể thiếu trong thiết kế cơ sở dữ liệu, cùng với trigger nó đảm bảo tính toàn vẹn của cơ sở dữ liệu.
Tạo store procedure trong access không giống như ms sql, những ai dùng quen SQL Managment Studio sẽ rất lúng túng không biết chức năng store procedure trong access ở đâu. Với Access, store procedure và query là một.
Bài viết này hướng dẫn tạo store procedure với Access

Yêu cầu

  • Microsoft Access 2010
  • Cơ sở dữ liệu (.mdb) cần thêm store procedure

Các bước

  • Tạo Query
  • Viết mã SQL

Chi tiết

Đầu tiên, mở Access, và load cơ sở dữ liệu lên.
Chọn Design từ thành ribbon, ví dụ này sẽ làm việc với một sơ sở dữ liệu mẫu như hình dưới.



Chọn tab Create từ thanh ribbon và chọn Query Design



Một cửa sổ sẽ hiện ra, chọn Close.




Sau đó hoặc nhấn vào SQL trên thành ribbon hoặc nhất chuột phải vào vùng làm việc trống và chọn SQL View để chuẩn bị viết code.




Điền code cho store procedure, cấu trúc hơi khác một chút so với MS SQL











Cuối cùng là Save nó lại (Ctrl+S), rồi click đúp vào mục AddMember phía bên tay trái cửa sổ để thực thi store procedure.