1. 程式人生 > >java 對wamp的mysql資料的操作

java 對wamp的mysql資料的操作

/**
實現功能
1.建立資料庫配置檔案
2.讀取資料庫配置檔案類
3.建立連線資料庫,以及執行sql語句的基類
4.呼叫基類,對資料庫進行查詢操作
*/

1.建立資料庫配置檔案
—檔名 jdbc_mysql.properties
—檔案所在位置 如下圖:
這裡寫圖片描述

2.讀取資料庫配置檔案類

package Connection.mysql;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Readconf extends Base {
	private final static String path ="./conf/jdbc_mysql.properties"; 
	/**
	 * @param args
	 * @throws FileNotFoundException 
	 */
	public static void main(String[] args)  {

	}
	
	/*
	 * 讀取配置檔案,獲取到Driver名稱
	 * 
	 * path,配置檔案的地址;演示樣式:./conf/jdbc_mysql.properties
	 * 單詞
	 * driver,字義:驅動,讀法:第外我
	 * */
	public static String GetDriver(String path) {
		String driver=null;
		//檔案路徑
		InputStream is;
		try {
			//獲取配置路徑流
			is = new FileInputStream(path);
			
			//new 讀取配置檔案物件
			Properties p = new Properties();
			try {
				//載入配置檔案
				p.load(is);
				//獲取驅動名
				driver = p.getProperty("driver");			
			} catch (IOException e) {
				System.out.println("沒有找到");
			}
		} catch (FileNotFoundException e1) {
			System.out.println("沒有找到配置檔案");
		}
		
		
		return driver;
	}
	
	/*
	 * 獲取資料庫地址 
	 * path 配置檔案地址
	 * databasename 資料庫名
	 * */
	public static String GetUrl(String path ,String dbname) throws FileNotFoundException{
		String url =null;
		//檔案路徑
		InputStream is;
		try {
			//獲取配置路徑流
			is = new FileInputStream(path);
			
			//new 讀取配置檔案物件
			Properties p = new Properties();
			try {
				//載入配置檔案
				p.load(is);
				//獲取驅動名
				url = p.getProperty("url");			
			} catch (IOException e) {
				System.out.println("載入檔案錯誤");
			}
		} catch (FileNotFoundException e1) {
			System.out.println("沒有找到配置檔案");
		}
		return url+dbname+"?";
	}
	
	/*
	 * 獲取資料庫使用者名稱
	 * */
	public static String Getuser(String path) throws FileNotFoundException{
		String user =null;
		//檔案路徑
		InputStream is;
		try {
			//獲取配置路徑流
			is = new FileInputStream(path);
			
			//new 讀取配置檔案物件
			Properties p = new Properties();
			try {
				//載入配置檔案
				p.load(is);
				//獲取驅動名
				user = p.getProperty("user");			
			} catch (IOException e) {
				System.out.println("載入檔案錯誤");
			}
		} catch (FileNotFoundException e1) {
			System.out.println("沒有找到配置檔案");
		}
		return user;
	}
	/*
	 * 獲取資料庫密碼
	 * */
	public static String GetPass(String path) throws FileNotFoundException{
		String pass =null;
		//檔案路徑
		InputStream is;
		try {
			//獲取配置路徑流
			is = new FileInputStream(path);
			
			//new 讀取配置檔案物件
			Properties p = new Properties();
			try {
				//載入配置檔案
				p.load(is);
				//獲取驅動名
				pass = p.getProperty("pass");			
			} catch (IOException e) {
				System.out.println("載入檔案錯誤");
			}
		} catch (FileNotFoundException e1) {
			System.out.println("沒有找到配置檔案");
		}
		return pass;
	}
	
}

3.建立連線資料庫,以及執行sql語句的基類

package Connection.mysql;

import java.io.FileNotFoundException;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;


public class Jdbc_Base extends Readconf{
	
	private final static String path ="./conf/jdbc_mysql.properties";  //配置檔案路徑
	public static Connection conn = null; //連線伺服器物件
	public static PreparedStatement ps =null; //執行sql 物件
	public static ResultSet  rs =null; //結果集物件
	/**
	 * @param args
	 */
	public static void main(String[] args) {
//		boolean falg = Connection_db("demo");
//		System.out.println(falg);
	}
	
	/*
	 * 連線資料庫 
	 * dbname : 要連線的資料庫名
	 * */
	public static boolean Connection_db(String dbname)  {
		boolean falg = false;
		/*
		 * 準備引數
		 * driver:驅動名
		 * 
		 * */
		String driver = Readconf.GetDriver(path);
		String url =null;
		String user =null;
		String pass =null;
		try {
			url  = Readconf.GetUrl(path, dbname);
			user = Readconf.Getuser(path);
			pass = Readconf.GetPass(path);
		} catch (FileNotFoundException e) {
			System.out.println("沒有找到檔案,錯誤在Readconf");
		}
		
		
		try {
			//1.載入驅動
			Class.forName(driver);
			System.out.println("載入驅動成功");
			
			//2.連線資料庫
			conn = (Connection) DriverManager.getConnection(url, user, pass);
			//判斷資料是否關閉著
			boolean closed = conn.isClosed();
			if(!closed){
				System.out.println("資料庫連線成功");
				falg=true;
			}else{
				System.out.println("資料庫連線失敗");
			}
		} catch (ClassNotFoundException e) {
			System.out.println("沒有找到檔案,錯誤在Readconf");
		} catch (SQLException e) {
			System.out.println("連線資料庫失敗");
		}finally{
//			try {
//				conn.close();
//			} catch (SQLException e) {
//				System.out.println("關閉---Connection---錯誤");
//			}
		}
		
		return falg;
	}
	
	/*
	 * 執行sql,返回結果集
	 * */
	public static ResultSet execute_sql(String dbname,String sql){
		boolean falg = Connection_db(dbname);
		if(falg){
			try {
				//預載入sql語句
				ps = (PreparedStatement) conn.prepareStatement(sql);
				//執行sql, 且獲取返回值
				rs = ps.executeQuery();
			} catch (SQLException e) {
				System.out.println("執行sql失敗:"+sql);
			}finally{
//				try {
//					ps.close();
//				} catch (SQLException e) {
//					System.out.println("關閉---PreparedStatement---錯誤");
//				}
			}
		}else{
			System.out.println("沒有連線上資料庫");
		}
		
		return rs;
	} 

}

4.呼叫基類,對資料庫進行查詢操作

package Connection.mysql;

import java.sql.ResultSet;
import java.sql.SQLException;


public class Demo1 extends Jdbc_Base{
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		select();
	}
	
	//執行查詢
	public static void select(){
		//sql 語句 查詢 id=1 的那一行的資料
		String sql ="select * from user where id = '1'";
		System.out.println(sql);
		ResultSet rs = Jdbc_Base.execute_sql("demo", sql);
		try {
			//測試部分
			if(rs.next()){
				//通過欄位獲取到 對應的值 
				String username = rs.getString("username");
				//列印資料庫獲取到的值
				System.out.println("---------");
				System.out.println("user:"+username);
				System.out.println("---------");
			}else{
				System.out.println("kong");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				//關閉操作
				rs.close();
				Jdbc_Base.ps.close();
				Jdbc_Base.conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}