java鏈接數據庫的那些事

在長期使用數據庫的童鞋,你有沒有想想的你的數據庫鏈接是否合理,最優。

個人的一點學習心得,分享下

 1、先看一個最簡單的mysql數據庫的鏈接,代碼如下:

	/**
	 * 一個簡單的鏈接
	 */
	public static Connection getConn(){
		String url = "jdbc:mysql://192.168.0.1:3306/yourdatabasename?characterEncoding=utf8";
		String password = "123456";
		String user = "root";
		String driver = "com.mysql.jdbc.Driver";
		Connection conn = null;
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return conn;
	}
	/**
	 * 一個簡單的測試
	 */
	public static void testSQLConn(){
		Connection conn = SQLCONNUtil.getConn();
		ResultSet rs = null;
		try {
			Statement st = conn.createStatement();
			rs = st.executeQuery("select * from tablename limit 3;");
			while (rs.next()){
				System.out.println(rs.getObject(1)+"\t"+rs.getObject(2));
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs != null){
					rs.close();
					rs = null;
				}
				if(conn != null){
					conn.close();
					conn = null;
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

問題1:如果寫完了上面的代碼,當你運行的時候,發現報錯有些driver類找不到,那就看看你的工程,你的mysql數據庫鏈接包有沒有導入工程,本空間裏有對應mysql和mssql的鏈接jar包,都是官網上下的,可以放心使用,或者你自己去官網上下載也行。(Java語言通過JDBC技術訪問數據庫。JDBC是一種“開放”的方案,它爲數據庫應用開發人員﹑數據庫前臺工具開發人員提供了一種標準的應用程序設計接口,使開發人員可以用純Java語言編寫完整的數據庫應用程序。JDBC提供兩種API,分別是面向開發人員的API和麪向底層的JDBC驅動程序API,底層主要通過直接的JDBC驅動和JDBC-ODBC橋驅動實現與數據庫的連接。所以使用不同的數據庫需要引入不同數據庫廠商提供的鏈接jar包)

問題2:上面的代碼是不是可以改進下?如果你的工程已經打包上傳至服務器,但是發現數據庫名稱不一致,總不能改了類,在上傳一次吧,這樣太麻煩,不夠靈活。在你的工程裏引入config.properties文件,然後把對應的信息寫入文件,在我們使用數據庫時直接讀config.properties即可,這樣對於修改也就變得相對簡單了。(讀取配置文件,可以參考下面的文章)

問題3:既然數據庫是這麼常用的工具,是不是應該有人已經給我們提供數據庫操作的各種類?是的,hibernate,Spring都有做這些事情,不過這些框架都比較大,引入的同時必然會引入一些額外的東西,還有就是你自己要擴展自己的知識,倚天劍削鐵如泥,用好了可以殺敵於無形,用不好也會傷己的,如果有大的需求,那就認真學習下,在使用了。

問題4:我們使用數據庫的一般步驟是:(1)取得與數據庫的鏈接;(2)發出sql語句;(3)斷開鏈接;當我們做一些造作時,頻繁的鏈接斷開造作是對數據庫資源的浪費,如果我們能夠建一個連接池,在我們使用之處,已經做好了一些鏈接,我們使用的時候直接從連接池中取,用完了在放回去,這樣效率就會得到提高。現在應用比較多的連接池有:c3p0,DBCP,BoneCP (據說BoneCP 比前兩個平均快很多)這個有興趣的可以去試試。

問題5:java鏈接msslq2008,上面是鏈接mysql相關的,下面給一個簡單的鏈接mssql2008的例子,數據庫鏈接的jar包,jdbc4.jar可以去我的空間裏下載,代碼如下:

	/**
	 * 通過Microsoft JDBC驅動獲得數據庫連接
	 * @return Connection
	 */
	public static void getConnection() {
		Connection conn = null;
		Statement stmt;
		ResultSet rs;
		String url = "jdbc:sqlserver://10.11.5.250:1433;DatabaseName=yourdatabase";
		String uid = "root";
		String pwd = "123456";
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			conn = DriverManager.getConnection(url, uid, pwd);
			stmt = conn.createStatement();
			StringBuilder sql = new StringBuilder("select * from yourtable");
			rs = stmt.executeQuery(sql.toString());
			while (rs.next()){
				System.out.println(rs.getObject(1)+"\t"+rs.getObject(2));
			}
		} catch (ClassNotFoundException ex) {
			ex.printStackTrace();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return ;
	}


 

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