JAVA连接MySQL稍微繁琐,所以先写一个类用来打开或关闭数据库:
public class DBHelper { String driver = "com.mysql.jdbc.Driver"; String url= "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; public Connection conn; public DBHelper(){ try { // 加载驱动程序 Class.forName(driver); // 连续数据库 conn = (Connection) DriverManager.getConnection(url, user, password); if(!conn.isClosed()) System.out.println("Succeeded connecting to the Database!"); } catch (Exception e) { e.printStackTrace(); } } public void close() { try { this.conn.close(); } catch (Exception e) { e.printStackTrace(); } } }
再写一个JDBCTest.java来执行相关查询操作
public class JDBCTest { public static void main(String[] args){ String sql = "select * from employee";//SQL语句 DBHelper db = new DBHelper();//创建DBHelper对象 try{ PreparedStatement preStmt = (PreparedStatement) db.conn.prepareStatement(sql);//使用prepareStatement来执行SQL语句 ResultSet rs= (ResultSet) preStmt.executeQuery();//返回结果集 //Statement stmt = (Statement) db.conn.createStatement();//使用statement来执行SQL语句 //ResultSet rs = (ResultSet) stmt.executeQuery(sql);// 返回结果集 System.out.println("-----------------"); System.out.println("姓名" +" "+ "邮箱" +" "+ "日期"); System.out.println("-----------------"); while(rs.next()) { //获取结果集中的数据 String uname = rs.getString("name"); String uemail = rs.getString("email"); String uhiredate = rs.getString("hiredate"); // 输出结果 System.out.println(uname +" "+ uemail +" "+ uhiredate); } rs.close(); db.close();//关闭连接 }catch(SQLException e) { e.printStackTrace(); } } }
在查询方面,PrepareStatement和Statement是没有什么区别的。不过PrepareStatement比Statement更高级些。
PrepareStatement是先把sql语句送给系统,接着写入数据,再执行sql语句。
而Statement不能动态写入数据,只能执行固定的sql语句。
所以,PrepareStatement用于增加,删除,修改操作。Statement用于查询操作,不过PrepareStatement也可以进行查询(可能Statement功能越简单,程序效率越高吧,所以没弃用)。