市面上數據庫種類繁多,JAVA訪問的方式也有所不同。
1、利用數據源
在本地建一個數據源,指向遠程或是本地的數據庫,這種方法比較方便,適用於各種數據庫,SQL Server,Access等,使用方法如下:開始 - 控制面板 - 管理工具 - 數據源 - 系統 DSN(Data source Name)- 添加 - 選 SQL Server - 填入名稱(這裏寫上mydatabase),選擇相應的服務器,後續按提示操作即可。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class TestDSN {
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(
"jdbc:odbc:mydatabase", "sa", "pa");
String sql = "SELECT * From id_mac_rssi";
ResultSet rs = con.createStatement().executeQuery(sql);
while (rs.next()) {
System.out.println("id:" + rs.getString(1) + " mac:"
+ rs.getString(2) + " rssi:" + rs.getString(3));
}
rs.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
這種方式相當於把連接數據庫的工作交給“數據源”,JAVA 只和“數據源”打交道。優點是通用性好,不需要改變JAVA代碼,而且可以訪問 Access 這樣的沒有進程守護的數據庫文件,JAVA標準庫裏包含了相關的庫,不需額外添加。缺點是要手動設置或者代碼實現添加數據源,一般來說用戶希望得到軟件後直接就可以用,而不希望做過多的設置。
2、直接訪問遠程數據庫
這種方式要求遠程數據庫有進程守護,Oracle,SQL Server,MySql都沒問題,但是Access 就不行,它只是一個文件而已。
- 訪問 SQL Server 方式:
SQL Server 的訪問並不輕鬆,需要下載支持的包,版本不同,支持的包也有差異。這裏使用 SQL Server 2005 ,添加用戶 leidiqiu ,密碼 888888。到微軟的網站下載支持的包 sqljdbc.jar 和 sqljdbc4.jar 並添加到環境變量。
package com.ldq;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class Test04 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String sql = "INSERT INTO img(c_id,c_img) VALUES(?,?)";
Connection con = DriverManager
.getConnection("jdbc:sqlserver://127.0.0.1:1433;databasename=mydatabase;user=leidiqiu;password=888888");
PreparedStatement ps = con.prepareStatement(sql);
FileInputStream fis = new FileInputStream("img.png");
ps.setInt(1, 1003);// 對應第一個 ? 號
ps.setBinaryStream(2, fis, fis.available());// 對應第二個 ? 號
int rst = ps.executeUpdate();
System.out.println(rst);// 數據是否插入成功
fis.close();
ps.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
}
img.png 文件放在工程目錄下,數據庫表的設計爲 c_id int,c_img img ,img的數據類型其實就是字節流存儲的圖片,在用 SELECT * FROM img 查看 img 部分是16進制的內容,和用 WinHex 打開 img.png 的內容一致。0x424D36.....