JAVA 数据库连接四大件:driver、url、user、password
连接过程:
String driver = “com.mysql.jdbc.Driver”;
String url = “jdbc:mysql://127.0.0.1:3306/目标数据库名”;
String user = “数据库登录名”;
String password = “数据库密码”;
Class.forName(driver);
Connection conn = DriverManager.getConnection(url,user,password);
DriverManager内部是一个驱动列表,可以同时注册很多驱动(中间用冒号分割)
注册驱动三种方法:
1)DriverManager.registerDriver(new com,mysql.jdbc.Driver());
* 会造成代码依赖:如果MySQL的JAR包不存在代码就不能通过编译
* 会在DriverManager中产生两个相同的驱动实例
2)System.setProperty("jdbc.drivers","com,mysql.jdbc.Driver");
* 通过属性赋值方式注册驱动,很少使用
3)Class.forName("com,mysql.jdbc.Driver");
* forName()方法把类装载到Java虚拟机中,不一定创建实例。类装载到Java虚拟机中后,调用类的静态代码块(类的初始化),将其注册到DriverManager中
* 推荐使用这种方式
关闭数据库连接要注意关闭顺序与获取顺序相反
/**
* 关闭连接
*/
- public static void close(Connection conn,PreparedStatement pstmt,ResultSet rs) {
- if(rs != null) {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- rs = null;
- }
- if(pstmt != null) {
- try {
- pstmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- pstmt = null;
- }
- if(conn != null) {
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- conn = null;
- }
- }
复制代码
查询过程(注:以下方法都没关闭连接):
1)Statement查询
- Statement stmt = conn.createStatement();
- String sql = "select * from 表名";
- ResultSet rs = stmt.executeQuery(sql);
- while (rs.next()) {
- System.out.println(rs.getString("列名") + "\t" + rs.getString("列名"));
- }
复制代码
2)preparedStatement查询
- PreparedStatement pstmt = null;
- String sql = "select * from cars";
- String sql_1 = "insert into cars values (?,?,?,? )";
- /*
- * 查询车辆信息
- */
- pstmt = conn.prepareStatement(sql);
- pstmt.executeQuery(sql);
- /*
- * 插入车辆信息
- */
- pstmt = conn.prepareStatement(sql_1);
- pstmt.setString(1, "蒙B123456");
- pstmt.setString(2, "张三");
- pstmt.setString(3, "灰色");
- pstmt.setInt(4, 12000);
- pstmt.executeUpdate();
- Preparedstatement查询时pstmt.executeUpdate();执行语句中不能有sql参数,否则会有sql语句为空的Exception
复制代码 |
|