1.Java連線MySQL資料庫
Java連線MySql需要下載JDBC驅動MySQL-connector-java-5.0.5.zip(舉例,現有新版本)。然後將其解壓縮到任一目錄。我是解壓到D盤,然後將其目錄下的MySQL-connector-java-5.0.5-bin.jar加到classpath裡,具體如下:
“我的電腦”-> “屬性” -> “高階” -> “環境變數”,在系統變數那裡編輯classpath,將D:\MySQL-connector-java-5.0.5\MySQL-connector-java-5.0.5-bin.jar加到最後,在加這個字串前要加“;”,以與前一個classpath區分開。然後確定。
package
hqs;
import
java.sql.*;
public
class
DataBasePractice {
public
static
void
main(String[] args) {
//宣告Connection物件
Connection con;
//驅動程式名
String driver =
"com.mysql.jdbc.Driver"
;
//URL指向要訪問的資料庫名mydata
//MySQL配置時的使用者名稱
String user =
"root"
;
//MySQL配置時的密碼
String password =
"root"
;
//遍歷查詢結果集
try
{
//載入驅動程式
Class.forName(driver);
//1.getConnection()方法,連線MySQL資料庫!!
con = DriverManager.getConnection(url,user,password);
if
(!con.isClosed())
System.out.println(
"Succeeded connecting to the Database!"
);
//2.建立statement類物件,用來執行SQL語句!!
Statement statement = con.createStatement();
//要執行的SQL語句
String sql =
"select * from student"
;
//3.ResultSet類,用來存放獲取的結果集!!
ResultSet rs = statement.executeQuery(sql);
System.out.println(
"-----------------"
);
System.out.println(
"執行結果如下所示:"
);
System.out.println(
"-----------------"
);
System.out.println(
" 學號"
+
"\t"
+
" 姓名"
);
System.out.println(
"-----------------"
);
String name =
null
;
String id =
null
;
while
(rs.next()){
//獲取stuname這列資料
name = rs.getString(
"stuname"
);
//獲取stuid這列資料
id = rs.getString(
"stuid"
);
//首先使用ISO-8859-1字符集將name解碼為位元組序列並將結果儲存新的位元組陣列中。
//然後使用GB2312字符集解碼指定的位元組陣列。
name =
new
String(name.getBytes(
"ISO-8859-1"
),
"gb2312"
);
//輸出結果
System.out.println(id +
"\t"
+ name);
}
rs.close();
con.close();
}
catch
(ClassNotFoundException e) {
//資料庫驅動類異常處理
System.out.println(
"Sorry,can`t find the Driver!"
);
e.printStackTrace();
}
catch
(SQLException e) {
//資料庫連線失敗異常處理
e.printStackTrace();
}
catch
(Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally
{
System.out.println(
"資料庫資料成功獲取!!"
);
}
}
}
2.新增、修改、刪除操作
在上面while程式碼段後面新增以下程式碼段:
String name =
null
;
String id =
null
;
while
(rs.next()){
//獲取stuname這列資料
name = rs.getString(
"stuname"
);
//獲取stuid這列資料
id = rs.getString(
"stuid"
);
//首先使用ISO-8859-1字符集將name解碼為位元組序列並將結果儲存新的位元組陣列中。
//然後使用GB2312字符集解碼指定的位元組陣列。
name =
new
String(name.getBytes(
"ISO-8859-1"
),
"gb2312"
);
//輸出結果
System.out.println(id +
"\t"
+ name);
}
PreparedStatement psql;
ResultSet res;
//預處理新增資料,其中有兩個引數--“?”
psql = con.prepareStatement(
"insert into student values(?,?)"
);
psql.setInt(
1
,
8
);
//設定引數1,建立id為5的資料
psql.setString(
2
,
"xiaogang"
);
//設定引數2,name 為小明
psql.executeUpdate();
//執行更新
//預處理更新(修改)資料
psql = con.prepareStatement(
"update student set stuname = ? where stuid = ?"
);
psql.setString(
1
,
"xiaowang"
);
//設定引數1,將name改為王五
psql.setInt(
2
,
10
);
//設定引數2,將id為2的資料做修改
psql.executeUpdate();
//預處理刪除資料
psql = con.prepareStatement(
"delete from student where stuid = ?"
);
psql.setInt(
1
,
5
);
psql.executeUpdate();
//查詢修改資料後student表中的資料
psql = con.prepareStatement(
"select*from student"
);
res = psql.executeQuery();
//執行預處理sql語句
System.out.println(
"執行增加、修改、刪除後的資料"
);
while
(res.next()){
name = res.getString(
"stuname"
);
id = res.getString(
"stuid"
);
name =
new
String(name.getBytes(
"ISO-8859-1"
),
"gb2312"
);
System.out.println(id +
"\t"
+ name);
}
res.close();
psql.close();
該程式碼段使用到了預處理語句:
con.prepareStatement(String sql);
這樣生成資料庫底層的內部命令,並將該命令封裝在preparedStatement物件中,可以減輕資料庫負擔,提高訪問資料庫速度。
Java連線Oracle資料庫的示例程式碼
最基本的Oracle資料庫連線程式碼(只針對Oracle11g):
1、右鍵專案->構建路徑->配置構建路徑,選擇第三項“庫”,然後點選“新增外部Jar”,選擇“D:\Oracle\app\oracle\product\11.2.0\server \jdbc\lib\ojdbc6_g.jar”(注:D:\Oracle為資料庫的安裝路徑)。
2、以下程式碼為非常標準的Oracle資料庫連線程式碼示例:
/**
* 一個非常標準的連線Oracle資料庫的示例程式碼
*/
public void testOracle()
{
Connection con = null;// 建立一個數據庫連線
PreparedStatement pre = null;// 建立預編譯語句物件,一般都是用這個而不用Statement
ResultSet result = null;// 建立一個結果集物件
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");// 載入Oracle驅動程式
System.out.println("開始嘗試連線資料庫!");
String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:XE";// 127.0.0.1是本機地址,XE是精簡版Oracle的預設資料庫名
String user = "system";// 使用者名稱,系統預設的賬戶名
String password = "147";// 你安裝時選設定的密碼
con = DriverManager.getConnection(url, user, password);// 獲取連線
System.out.println("連線成功!");
String sql = "select * from student where name=?";// 預編譯語句,“?”代表引數
pre = con.prepareStatement(sql);// 例項化預編譯語句
pre.setString(1, "劉顯安");// 設定引數,前面的1表示引數的索引,而不是表中列名的索引
result = pre.executeQuery();// 執行查詢,注意括號中不需要再加引數
while (result.next())
// 當結果集不為空時
System.out.println("學號:" + result.getInt("id") + "姓名:"
+ result.getString("name"));
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
// 逐一將上面的幾個物件關閉,因為不關閉的話會影響效能、並且佔用資源
// 注意關閉的順序,最後使用的最先關閉
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("資料庫連線已關閉!");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}