// 使用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();
}