JDBC連接數據庫的筆記和例子

 
package com.star.util;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 模塊名稱:用來連接數據庫的方法
 * 類的作用:連接數據庫的類
 * dbName=null;//連接數據庫的名稱
 * dbUserName=null;//連接數據庫賬號
 * dbUserPass=null;//連接數據庫的密碼
 * post=null;//連接數據庫的端口號
 * dbServert=null;//連接數據的IP
 * 製作時間:2011-8-17
 * 製作人:willian
 */
public class BaseDao {
	/**
	 * dbName=null;//連接數據庫的名稱 
	 * dbUserName=null;//連接數據庫賬號
	 * dbUserPass=null;//連接數據庫的密碼
	 * post=null;//連接數據庫的端口號
	 * dbServert=null;//連接數據的IP
	 * CRMDATA
	 */
	public  String dbName="databaseName";//連接數據庫的名稱
	public  String dbUserName="root";//連接數據庫賬號
	public  String dbUserPass="root";//連接數據庫的密碼
	public  String post="3306";//連接數據庫的端口號
	public  String dbServert="127.0.0.1";//連接數據的IP
	public  CallableStatement call;//調用存儲過程
	private Connection con;//打開連接
	private Statement stat;//執行語句的
	private ResultSet re;//接收集合
	private boolean boo = false;
	public static int dd=1;

	static{
	
		switch (dd) {
		case 1:
			try {
				Class.forName("com.mysql.jdbc.Driver");
				System.out.println("加載mysql驅動成功");
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
				System.out.println("沒有mysql加載驅動");
			}
			break;
		case 2:
			try {
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
				System.out.println("連接SQL2005成功");
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
				System.out.println("麼有加載SQL2005驅動");
			}
			break;

		default:
			System.out.println("沒有你要連接的數據庫");
			break;
		}
		
	}
	/**
	 * 打開數據庫的方法
	 * @return 打開成功就返回true 否則就是 false
	 */
	public boolean open(){
		switch (dd) {
		case 1:
			try{
				con = DriverManager.getConnection(
						"jdbc:mysql://"+dbServert+":"+post+"/"+dbName+"", dbUserName, dbUserPass);
				boo =  true;
				stat = con.createStatement();
				System.out.println("打開mysql數據庫成功");
			}catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
				boo = false;
			}
			break;
		case 2:
			 try {
				
				 con=DriverManager.getConnection(
						 "jdbc:sqlserver://"+dbServert+":"+post+";databaseName="+dbName+"", dbUserName,dbUserPass);
				 stat=con.createStatement();
				 System.out.println("打開SQL2005數據庫成功");
			 } catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			break;
			
		default:
			System.out.println("沒有你要連接的數據庫");
			break;
		}
		
		return boo;
	}
	/**
	 * 添加和刪除的方法
	 * @param sql
	 * @return 返回1和2,1成功,2失敗
	 */
	public int exit(String sql){
		int a = 0;
		try {
			a = stat.executeUpdate(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			this.clos();
			System.out.println("添加失敗");
		}finally{
			this.clos();//關閉數據庫
		}
		return a;
	}
	/**
	 * 查詢的方法返回的是個結果集
	 * @param sql
	 * @return
	 */
	public ResultSet select(String sql){
		try {
			re = stat.executeQuery(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("查詢失敗");
		}
		return re;
	}
	/**
	 * 調用存儲過程
	 * @param callName 存儲過程的名稱
	 * @param Volume  獲取存儲過程的個數
	 * @return 返回0 = 1
	 */
	public int call(String callName,String[] Volume){
		int a = 0;
		int i = 0;
		try{
			call = con.prepareCall("{ call " + callName + " }");
				for (i = 0; i < Volume.length; i++) {//獲取多個存儲過程的數據集
					call.setString(i + 1, Volume[i]);//運行數據集
				}
				call.execute();//提交存儲過程
		}catch (Exception e) {
			// TODO: handle exception
			this.clos();
		}finally{
			this.clos();
		}
		return a;
	}
	/**
	 *  關閉數據的關閉
	 */
	public void clos(){
		try{
			if (re!=null) {//關閉數據集
				re.close();
			}
			if (stat!=null) {//關閉執行語句
				stat.close();
			}
			if (con!=null) {//關閉連接
				con.close();
			}
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			System.out.println("關閉數據庫失敗");
		}
	}
	/**
	 * 關閉存儲過程的方法
	 */
	public void callclos(){
		if (call!=null) {
			try {
				call.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	/**
	 * 連接數據庫的測試方法
	 * @param args
	 */
	public static void main(String[] args) {
		BaseDao db = new BaseDao();
		db.open();
	}
}
三•JDBC常用的方法
package com.star.schedule.dao;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.star.util.BaseDao;


/**
 * 模塊作用:SQL的執行語句的方法
 * 		   查詢數據庫表裏面的總行數
 * 
 * @author 王世興
 * 製作時間:2010-12-17
 *
 */
public class Eexit {
	/**
	 * SQL 執行的方法 返回一個整數 1代表成功 0代表不成功
	 * @return
	 */
	public int setExit(String sql){
		int a = 0;//返回的參數默認的是0
		BaseDao db = new BaseDao();
		db.open();
		a = db.exit(sql);//執行添加的方法成功就給a複製
		if (a>0) {
			System.out.println("添加成功"+sql);
		}else{
			System.out.println("添加失敗"+sql);
		}
		return a;//返回參數
	}
	/**
	 * 需要輸入SQL語句
	 * 獲取總行數 在查詢總行數的字段是:counts
	 * 
	 * @param sql
	 *            查詢的SQL語句
	 *            	
	 * @return 總行數 是整形
	 */
	public int getCounts(String sql) {
		ResultSet re;
		int a = 0;// 總行數默認爲0
		BaseDao db = new BaseDao();
		db.open();// 打開數據庫
		re = db.select(sql);
		if (re != null) {// 判斷查詢數據集不能爲空
			try {
				re.next();
				String c = re.getString("counts");// 獲取總行數的字段
				if (c != null) {
					a = Integer.parseInt(c);// 把字符串轉換成整數
				} else {
					System.out.println("總行數不能爲0");
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				db.clos();
			}
		} else {
			db.clos();
		}
		return a;
	}
	/**
	 * 需要輸入Sql語句
	 * 查詢單個數據沒有獲取值的時候可以用
	 * 有此數據就返回true
	 * 沒有此數據就返回false
	 * @param sql
	 * @return
	 */
	public boolean getDangeSelect(String sql){
		boolean d = false;
		BaseDao db = new BaseDao();
		db.open();
		ResultSet re = db.select(sql);//執行添加的方法成功就給a複製
		if (re!=null) {
			db.clos();
			d = true;
		} else {
			db.clos();
			d = false;
		}
		return d;
	}
}

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