【CXY】JAVA基礎 之 JDBC

提示:閱讀本文之前您至少具備:

    1.sql基礎知識

    2.Java面向對象編程

    3.異常的相關知識

 

JDBC(Java Data Base Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API

學習JDBC必須知道的幾個接口和類:

    DriverManager:管理jdbc驅動的服務類(官網api解釋)

    Connection:代表每一次數據庫連接

    Statement:執行sql語句的工具接口 

    PreparedStatement:一個預編譯的SQL Statement

    ResultSet:結果集,通過sql查詢後產生的一張數據表

 

本文只講述這些基礎的如何使用,除此之外還有很多相關的內容,例如:

ResultSetMetaData、DatabaseMetaData、RowSet、RowSetFactory

事務、分頁、存儲二進制文件、執行存儲過程、連接池(c3p0)等等

在今後的文章講述,請關注我博客其他的文章。

 

使用前準備:

    下載你對應的數據庫驅動包

    mysql下載地址:http://www.mysql.com/downloads/connector/j/ (2013-02-26有效)

    注意:這裏會讓你註冊,但是仔細查找會發現下面有個 No thanks, just start my download. 點擊這個就可以下載

    壓縮包內有一個mysql-connector-java-5.1.23-bin.jar文件,將它加入到你的bulid path中

package com.cxy.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * @author cxy
 */
public class JdbcTest
{
	private static Connection con=null;
	private static Statement stmt=null;
	private static ResultSet rs=null;
	
	public static void main(String[] args) throws Exception
	{
		try
		{
			/* jdbc編程可分爲5步
			 * 第一步:加載驅動	將指定類加載到jvm中
			 * 第二步:創建數據庫連接(Connection)
			 * 第三步:創建一個Statement
			 * 第四步:創建一個結果集(ResultSet)
			 * 第五步:關閉ResultSet、Statement、Connection
			 * 
			 * 說明:
			 * 1.良好的編程習慣應該將第五步的關閉操作放到 finally去執行
			 * 2.java7後的新接口可以提供 自動關閉功能 見下文
			 * 3.真實項目中 數據庫相關連接信息都應寫到配置文件中(xml或者Properties文件中)
			 * 4.使用本例前請先建立對應的數據庫:dbtest,然後運行建表語句( 或修改成任意自己的庫和表)
			 */
			Class.forName("com.mysql.jdbc.Driver");	
			con=DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root");  //三個參數分別是數據庫連接、帳號、密碼
			stmt=con.createStatement();
			//stmt.execute("CREATE TABLE t_student ( id_ varchar(32) not null,name_  varchar(32),sex  varchar(32))");
			//stmt.execute("insert into t_student values ('1','小明','男')");
			//stmt.execute("insert into t_student values ('2','小白','女')");
			//stmt.execute("delete from t_student");
			stmt.executeQuery("select * from t_student");
			rs=stmt.getResultSet();
			System.out.println("id\t姓名\t 性別");
			while(rs.next())
			{
				System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
			}
			System.out.println("操作成功");
		}catch (Exception e) 
		{
			System.out.println("數據庫操作出現異常");
		}finally
		{
			if(rs!=null)
			{
				//5.關閉結果集
				rs.close();
			}
			if(stmt!=null)
			{
				//6.關閉狀態集
				stmt.close();
			}
			if(con!=null)
			{
				//7.關閉數據庫連接
				con.close();
			}
			System.out.println("數據庫各種資源已經關閉");
		}
		System.out.println("=====================================");
		
		/* Ok 我們已經看到了 其實我們只想操作一下數據庫而已!難道那些煩人的關閉操作 java就不能自動執行?
		 * java7開始這個夢想成真了!java7開始出現了一個AutoCloseable接口,並且大部分的需要關閉資源的類都實現了這個接口
		 * 下面我們就來寫一個和上面類似的程序看看吧
		 * 注意:這個只能在安裝了java7之後的版本才能使用
		 */
		try(
				Connection con1=DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root");
				Statement stmt1=con1.createStatement();
				ResultSet rs1=stmt1.executeQuery("select * from t_student");
			)
			{
				System.out.println("id\t姓名\t 性別");
				while(rs1.next())
				{
					System.out.println(rs1.getString(1)+"\t"+rs1.getString(2)+"\t"+rs1.getString(3));
				}
			}catch(SQLException e)
			{
				System.out.println("數據庫操作出現異常");
			}
		
		/*
		 * ok 簡單嗎?神奇嗎?這就是傳說中的try-with-resource,不僅僅是jdbc可以這樣用哦~
		 * 更多擴展閱讀請看:http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html
		 */
	}
}

聲明:

1.原創文章,轉載請標明並加本文連接。

2.更詳盡的API請參見  http://docs.oracle.com/javase/7/docs/api/

3.文章反映個人愚見,如有異議歡迎討論指正


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