JAVA 訪問數據庫問題

市面上數據庫種類繁多,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.....

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章