Java中使用JDBC訪問MySQL數據庫
使用JDBC訪問MySQL數據庫也有兩種方法(這里不介紹使用APP SERVER的數據庫連接池訪問數據庫),一種是使用JDBC-ODBC橋方式連接,這里不作介紹了,可以參考連接SQL Server2000的方式。這里主要介紹使用MySQL提供的JDBC驅動程序來連接:
首先下載(http://www.mysql.com)、安裝并配置MySQL,下載MySQL5.1并進行安裝。安裝完成之后接著進行配置,配置時選擇Standard Configuration(標準配置)即可,然后選擇服務器名字MySQL51,并選中"Include Bin Directory in Windows PATH",之后輸入root用戶的密碼,最后執行配置就可以了。這里還有一點,如果要使MySQL支持中文,還需要更改一下配置信息,更改MYSQL安裝目錄下的my.ini文件里的內容。把default-character-set=中的拉丁編碼改為utf8,然后保存,重新啟動MYSQL服務器,之后建立的數據庫及數據庫中的表的編碼就是UTF8了,表中就可以插入中文了。安裝完成后,下一步要進行的是安裝MYSQL JDBC驅動程序。
到http://mysql.cs.pu.edu.tw/Downloads/Connector-J/mysql-connector-java-5.1.2-beta.zip下載MYSQL5.1的JDBC驅動程序,解壓縮到你放JDBC驅動程序的位置就可以了,不需要安裝。然后設置Classpath環境變量,在Classpath環境變量里添加JDBC驅動程序,如我的是添加D:\JDBC_Driver\mysql\mysql-connector-java-5.1.2-beta\mysql-connector-java-5.1.2-beta-bin.jar。這樣就可以了,可以寫程序進行測試了。
在mysql里創建數據庫mydb,并在mydb里建一個表格studinfo如下:
create database mydb;
use mydb;
create table studinfo
(ID varchar(10) primary key,
Name varchar(30),
Age int);
然后使用下面的程序往數據庫里插入一條記錄并讀出來打印:
1 package jdbc.test1;
2
3 import java.sql.*;
4
5 /**
6 * @author wzhongyu
7 *
8 */
9 public class JDBCDemo {
10
11 /**
12 * @param args
13 */
14 public static void main(String[] args) {
15 String user = "root";
16 String password = "123456";
17 String url = "jdbc:mysql://localhost:3306/mydb";
18 String driver = "com.mysql.jdbc.Driver";
19 //String driver = "org.gjt.mm.mysql.Driver";
20 String tableName = "studinfo";
21 String sqlstr;
22 Connection con = null;
23 Statement stmt = null;
24 ResultSet rs = null;
25 try{
26 Class.forName(driver);
27 con = DriverManager.getConnection(url, user, password);
28 stmt = con.createStatement();
29
30 sqlstr = "insert into "+tableName+" values ('20000908','honey',21)";
31 stmt.executeUpdate(sqlstr);
32
33 sqlstr = "select * from "+tableName;
34 rs = stmt.executeQuery(sqlstr);
35
36 ResultSetMetaData rsmd = rs.getMetaData();
37 int j = 0;
38 j = rsmd.getColumnCount();
39 for(int k = 0; k<j; k++)
40 {
41 System.out.print(rsmd.getCatalogName(k+1));
42 System.out.print("\t");
43 }
44 System.out.println();
45 while(rs.next())
46 {
47 for(int i=0;i<j;i++)
48 {
49 System.out.print(rs.getString(i+1));
50 System.out.print("\t");
51 }
52 System.out.println();
53 }
54 }
55 catch(ClassNotFoundException e1)
56 {
57 System.out.println("數據庫驅動不存在!");
58 System.out.println(e1.toString());
59 }
60 catch(SQLException e2)
61 {
62 System.out.println("數據庫存在異常!");
63 System.out.println(e2.toString());
64 }
65 finally
66 {
67 try
68 {
69 if(rs != null) rs.close();
70 if(stmt != null) stmt.close();
71 if(con != null) con.close();
72 }
73 catch(SQLException e)
74 {
75 System.out.println(e.toString());
76 }
77 }
78 }
79 }
80
2
3 import java.sql.*;
4
5 /**
6 * @author wzhongyu
7 *
8 */
9 public class JDBCDemo {
10
11 /**
12 * @param args
13 */
14 public static void main(String[] args) {
15 String user = "root";
16 String password = "123456";
17 String url = "jdbc:mysql://localhost:3306/mydb";
18 String driver = "com.mysql.jdbc.Driver";
19 //String driver = "org.gjt.mm.mysql.Driver";
20 String tableName = "studinfo";
21 String sqlstr;
22 Connection con = null;
23 Statement stmt = null;
24 ResultSet rs = null;
25 try{
26 Class.forName(driver);
27 con = DriverManager.getConnection(url, user, password);
28 stmt = con.createStatement();
29
30 sqlstr = "insert into "+tableName+" values ('20000908','honey',21)";
31 stmt.executeUpdate(sqlstr);
32
33 sqlstr = "select * from "+tableName;
34 rs = stmt.executeQuery(sqlstr);
35
36 ResultSetMetaData rsmd = rs.getMetaData();
37 int j = 0;
38 j = rsmd.getColumnCount();
39 for(int k = 0; k<j; k++)
40 {
41 System.out.print(rsmd.getCatalogName(k+1));
42 System.out.print("\t");
43 }
44 System.out.println();
45 while(rs.next())
46 {
47 for(int i=0;i<j;i++)
48 {
49 System.out.print(rs.getString(i+1));
50 System.out.print("\t");
51 }
52 System.out.println();
53 }
54 }
55 catch(ClassNotFoundException e1)
56 {
57 System.out.println("數據庫驅動不存在!");
58 System.out.println(e1.toString());
59 }
60 catch(SQLException e2)
61 {
62 System.out.println("數據庫存在異常!");
63 System.out.println(e2.toString());
64 }
65 finally
66 {
67 try
68 {
69 if(rs != null) rs.close();
70 if(stmt != null) stmt.close();
71 if(con != null) con.close();
72 }
73 catch(SQLException e)
74 {
75 System.out.println(e.toString());
76 }
77 }
78 }
79 }
80
程序運行后會打印出插入表中的數據。
如果要在eclipse中運行這個程序,首先需要在eclipse(這里用的是MyEclipse)中配置數據庫。打開eclipse,選擇window-->Preferences-->MyEclipse-->Database Explorer-->Database Drivers,點鏈接進入到DB Browser,右鍵點空白處-->new,新建一個數據庫連接。要填入的東西如下:
Driver template:MySQL Connector/J
Driver name:MySQL Connector/J
Connection URL:jdbc:mysql://<hostname>[<:3306>]/<dbname> (注上面選擇MySQL Connector/J之后,這里會自動填入的)
User name:root
Password:123456 (注這里的密碼是配置MYSQL時的密碼)
在下面的Driver JARs框的右面點Add JARs,找到JDBC驅動程序mysql-connector-java-5.1.2-beta-bin.jar最后點OK就配置完成了。
如果不喜歡MYSQL的在命令行上運行方式,可以到http://www.mysql.com上去下載一個GUI工具就可以了。