JAVA JDBC

1.java連接數據庫

1.1加載驅動類
導入jar文件,jar都是class
右擊項目名----->properties---->JavaBuildPath---->Libraries---->add external jar
常用類如下:
java.sql.Connection;
java.sql.DriverManager;
java.sql.Statement;
例子如下
package lesson1;

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

public class JdbcDemo1 {

public static void main(String[] args) {
	try {
		//1.加載驅動類
		Class.forName("oracle.jdbc.driver.OracleDriver");
		//2.獲得連接 java.sql.Connection
		Connection con = DriverManager.getConnection("jdbc:oracle:thin:@PC1:1521:ORACLE","scott","tiger");
		//System.out.println(con);
		//3.執行sql語句   java.sql.Statement
		Statement stmt = con.createStatement();
		//4.執行查詢語句--->查詢得到的是結果集java.sql.ResultSet
		String sql = "select ename from emp";
		ResultSet rs =stmt.executeQuery(sql);
		//5.訪問結果集
		while(rs.next()){
			//System.out.println(rs.getString(1));
			//關閉資源---->異常後面要細緻處理
			System.out.println(rs.getString("ename"));
		}
		rs.close();
		stmt.close();
		con.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
}
}

運行結果如下

SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

把數據庫的連接和資源的關閉操作進行包裝JdbcUtil
因爲每個人的地址都不一樣,建立了一個properties文件,將信息放在該文件中
將來不同的人使用只要更改properties文件即可
properties如下

driverClass=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@PC1:1521:ORACLE
user=scott
pass=tiger

代碼如下

package lesson1;

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

public class JdbcUtil {
	private static Properties prop = new Properties();
	static{
		try {
			prop.load(JdbcUtil.class.getResourceAsStream("/database.properties"));
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
	public static Connection getConn(){
		try {
			Class.forName(prop.getProperty("driverClass"));
			Connection con = DriverManager.getConnection(
					prop.getProperty("url"),prop.getProperty("user")
					,prop.getProperty("pass"));
			return con;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	public static void close(Connection con ,Statement stmt,ResultSet rs){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
			if(stmt!=null){
				try {
					stmt.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(con!=null){
				try {
					con.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		
	}
}

2.把針對表的操作進行包裝DAO

一張表----類 對應(表—>類 列---->屬性 記錄----->對象)
就是將java對數據庫的操作封裝在DAO中,代碼如下

package lesson1;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class UserDao {
//增加一條記錄
	public int addUser(User user) {
		Connection con = null;
		Statement stmt = null;
		int n = 0;
		try {
			con = JdbcUtil.getConn();
			stmt = con.createStatement();
			String sql = "insert into bbs_user(id,username,userpass,email)" + " values(" + user.getId() + ",'"
					+ user.getUsername() + "','" + user.getUserpass() + "','" + user.getEmail() + "')";
			n = stmt.executeUpdate(sql);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			JdbcUtil.close(con, stmt, null);
		}
		return n;
	}
	//查詢所有
	public List<User> getAll(){
		Connection con = null;
		Statement stmt = null;
		ResultSet rs = null;
		ArrayList<User> users = new ArrayList<User>();
		try {
			con = JdbcUtil.getConn();
			stmt = con.createStatement();
			String sql = "select* from bbs_user";
			rs = stmt.executeQuery(sql);
			while(rs.next()){
				User user = new User();
				user.setId(rs.getInt("id"));
				user.setUsername(rs.getString("username"));
				user.setUserpass(rs.getString("userpass"));
				user.setEmail(rs.getString("email"));
				users.add(user);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			JdbcUtil.close(con, stmt, rs);
		}
		return users;
	}
}

測試代碼

package lesson1;

import java.util.List;

public class JdbcDemo4 {

	public static void main(String[] args) {
		//測試增加一條記錄
		UserDao ud = new UserDao();
		/*User user = new User(1001,"tianqi","1234tian","[email protected]");
		int n = ud.addUser(user);
		System.out.println(n);*/
		//測試查詢所有
		List<User>users = ud.getAll();
		for(User user:users){
			System.out.println(user);
		}
	}

}

結果如下
User [id=1001, username=tianqi, userpass=1234tian, [email protected]]
User [id=1002, username=zhangsan, userpass=zzzs123, [email protected]]
User [id=1003, username=lisi, userpass=237162, [email protected]]
User [id=1004, username=zhangsan, userpass=zsan, [email protected]]

3.java.sql.Statement------>java.sql.PreparedStatement
java.sql.PreparedStatement
sql語句中需要傳遞的值可以使用?佔位符號表示,提高效率。這樣可以起到預編譯的效果,性能較好,防止sql注入;

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