日期:2014-05-16  浏览次数:20517 次

java 连接数据库 statement 类的使用 2011 . 9 8


//??? 使用JDBC连接数据看查询主要步骤如下:
//
//??? 1. 加载JDBC驱动程序;
//
//??? 2. 负责管理JDBC驱动程序的类 DriverManager 会识别加载的驱动程序,用 DriverManager 类的方法 getConnection()来创建一个数据库连接类的实例对象;
//
//??? 3. 获取Connection对象的实例,用Connection对象的方法创建一个 Statement 对象实例,执行标准的SQL语句,对数据库、表进行相关操作.
//
//??? 4. 返回的结果用 ResultSet 类来处理.


这里是一个连接mysql的数据库的示例:


import java.sql.*;

public class DBHelper {
	
	Statement sql_statement;
	Connection conn;
	
	public Connection getConnection() {
		try{
			//第一步:加载MySQL的JDBC的驱动
			Class.forName("com.mysql.jdbc.Driver");
			//取得连接的url,能访问MySQL数据库的用户名,密码;数据库名:trade
			String url = "jdbc:mysql://localhost:3306/trade"; 
			String username = "root";
			String password = "fenghuoedu";
			//第二步:创建与MySQL数据库的连接类的实例
			Connection conn = DriverManager.getConnection(url, username, password);
			return conn;
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	
	public boolean insert(String name,String password){
		try {
			sql_statement.executeUpdate("insert users (name,password) values('" + name 
					+ "', '" + password + "');");
//			sql_statement.executeUpdate("INSERT INTO users VALUES('nihao','21');");
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
	}
	public void stop() throws SQLException{
		//关闭连接和声明
		sql_statement.close();
		conn.close();
	}
	public DBHelper(){
		try {
			//第三步:获取连接类实例con,用con创建Statement对象类实例 sql_statement
			conn = getConnection();
			sql_statement = conn.createStatement();
			//第四步:执行查询,用ResultSet类的对象,返回查询的结果			
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		new DBHelper();
	}

	public boolean query(String name,String password) throws Exception {
		String query = "select * from users where name = '" + name + "';";
		ResultSet result = sql_statement.executeQuery(query);
		while (result.next()) {
			String mPassword = result.getString("password");
			if(mPassword.equals(password)){
				return true;
			}
			//取得数据库中的数据
			System.out.println(name + "  " + password);
		}
		return false;
	}

	//注册时,用户名是否已被使用
	public boolean nameUsed(String name) throws SQLException {
		String query = "select * from users where name = '" + name + "';";
		ResultSet result = sql_statement.executeQuery(query);
		if(result.next()){  //移动时,没有行数了
			return true;
		}
		return false;
	}
}





这里说一下statement的几个方法的使用:

1. 对数据库做查询时,直接使用 stmt.executeQuery(sql),返回结果为一个resultSet结果集。然后对结果集操作即可。

2. 对数据库的曾删改操作时,使用stmt.executeUpdate(sql? 执行给定 SQL 语句,该语句可能为 INSERTUPDATEDELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。

3. stmt.execute(sql)返回值是boolean,如果第一个结果为 ResultSet 对象,则返回 true ;如果其为更新计数或者不存在任何结果,则返回 false(即查询操作返回true,其他操作返回false),这个方法看起来最简单,但是用起来比较麻烦。

执行查询操作时应该这样:

	if(sql_statement.execute(query)){
			ResultSet resultSet = sql_statement.getResultSet();
		}

?