日期:2014-05-16 浏览次数:20517 次
//??? 使用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 语句,该语句可能为 INSERT
、UPDATE
或 DELETE
语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
3. stmt.execute(sql)返回值是boolean,如果第一个结果为 ResultSet
对象,则返回 true
;如果其为更新计数或者不存在任何结果,则返回 false(即查询操作返回true,其他操作返回false),这个方法看起来最简单,但是用起来比较麻烦。
执行查询操作时应该这样:
if(sql_statement.execute(query)){
ResultSet resultSet = sql_statement.getResultSet();
}
?