Java中操作数据库语句JDBC基础
2018-03-22 19:35
579 查看
JDBC
JDBC Java Database connectivity Java数据库连接规范(一套接口) 由SUn公司提供的 JDBC四个核心类 DriverManager 创建连接 Connection 连接类 Statement 执行sql语句 ResultSet 结果集 JDBC连接步骤: 1.注册驱动 2.获取连接 Connection 3.获取sql 语句的执行对象 Statement 4.执行sql 语句 返回结果集 5.处理结果集 6.关闭资源
JDBC 连接
// 注册驱动 // 这种注册方式 相当于注册了两遍 // Driver 类 内部的静态代码块 已经注册了一遍 //DriverManager.registerDriver(new Driver()); // 直接把该类加载到内存当中 参数是 全限定类名 // 包名+类名 Class.forName("com.mysql.jdbc.Driver"); // 获取连接对象 // url 是访问数据库 链接地址 // 3306是数据库的端口号 // myjdbc是库名 String url = "jdbc:mysql://localhost:3306/myjdbc"; // 连接方式一 // root是数据库账号 // 123456是数据库密码 // Connection connection = DriverManager.getConnection(url, "root", "123456"); /* //获取连接的方式2 Properties info = new Properties(); // 添加用户名 密码 // 注意键值别拼错了 info.setProperty("user", "root"); info.setProperty("password", "123456"); Connection connection = DriverManager.getConnection(url, info); */ // 获取连接方式3 相当于使用了一个get请求 // 携带参数 访问链接 String url2 = "jdbc:mysql://localhost:3306/myjdbc?user=root&password=123456"; Connection connection = DriverManager.getConnection(url2); // 获取执行sql语句的对象 Statement Statement statement = connection.createStatement(); // 执行sql语句 返回结果集 // users 是表名 String sql = "select * from users"; ResultSet resultSet = statement.executeQuery(sql); // 处理结果集 // 循环遍历结果集 输出结果 // 有记录 next()方法 返回true 反之 返回 false // next方法是查看数据库下一条记录有没有值 // 有就返回true 没有就返回false while (resultSet.next()) { // 打印数据 // 结果集中添加的 索引 要和 查询语句中的 字段对应 // 注意:查询数据库时 索引从1开始 // 这里的12345 是数据库列的索引 // 1 代码 id System.out.println(resultSet.getObject(1)); System.out.println(resultSet.getObject(2)); System.out.println(resultSet.getObject(3)); System.out.println(resultSet.getObject(4)); System.out.println(resultSet.getObject(5)); System.out.println("--------------------"); } // 关闭资源 resultSet.close(); statement.close(); connection.close(); }
测试增删改查
// 注解 用来测试方法 // 注意: 要使用public修饰 无返回值方法 // 插入方法 @Test public void testInsert() throws Exception { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/myjdbc"; Connection connection = DriverManager.getConnection(url, "root", "123456"); Statement statement = connection.createStatement(); String sql = "insert into users values(5,'f','123456','w@qq.com','1997-06-01')"; int row = statement.executeUpdate(sql); if (row > 0) { System.out.println("插入成功"); } statement.close(); connection.close(); } // 修改方法 @Test public void testUpdate() throws Exception { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/myjdbc"; Connection connection = DriverManager.getConnection(url, "root", "123456"); Statement statement = connection.createStatement(); String sql = "update users set name = 'g' where name='f'"; // 受影响的行数 int update = statement.executeUpdate(sql); if (update > 0) { System.out.println("更新成功" + update + "行"); } statement.close(); connection.close(); } // 删除方法 @Test public void testDelete() throws Exception { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/myjdbc"; Connection connection = DriverManager.getConnection(url, "root", "123456"); Statement statement = connection.createStatement(); String sql = "delete from users where id=5 "; int row = statement.executeUpdate(sql); if (row > 0) { System.out.println("删除成功"); } statement.close(); connection.close(); } // 查询方法 //@Test写入时需要选择导入 import org.junit.Test; @Test public void testSelect() throws Exception { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/myjdbc"; Connection connection = DriverManager.getConnection(url, "root", "123456"); Statement statement = connection.createStatement(); // 查询 String sql = "select id,name,email from users"; ResultSet resultSet = statement.executeQuery(sql); // 处理结果集 while (resultSet.next()) { // 可以直接填字段名称 System.out.println(resultSet.getObject("id")); System.out.println(resultSet.getObject("name")); System.out.println(resultSet.getObject("email")); } resultSet.close(); statement.close(); connection.close(); }
连接数据库的异常处理
Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/myjdbc"; connection = DriverManager.getConnection(url, "root", "123456"); statement = connection.createStatement(); String sql = "select * from users"; resultSet = statement.executeQuery(sql); // 处理结果集(把数据库的记录封装到对象中) // 把对象保存到数组当中并遍历打印 // 创建集合 ArrayList<User> arrayList = new ArrayList<>(); while (resultSet.next()) { // 创建User对象 User user = new User(); user.setId(resultSet.getInt("id")); user.setName(resultSet.getString("name")); user.setPassword(resultSet.getString("password")); user.setEMail(resultSet.getString("email")); user.setBirthday(resultSet.getDate("birthday")); // 放入集合当中 arrayList.add(user); } // 遍历查看 for (User user : arrayList) { System.out.println(user); } } catch (ClassNotFoundException e) { // 停止程序 throw new RuntimeException("驱动加载失败"); } catch (SQLException e) { throw new RuntimeException("获取连接失败"); } finally { // 关闭资源前 要做非空判断 防止空指针出现 if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { throw new RuntimeException("关闭失败"); } // 加快系统回收的速度 resultSet = null; } if (statement != null) { try { statement.close(); } catch (SQLException e) { throw new RuntimeException("关闭失败"); } // 加快系统回收的速度 statement = null; } if (connection != null) { try { connection.close(); } catch (SQLException e) { throw new RuntimeException("关闭失败"); } // 加快系统回收的速度 connection = null; } }
JDBC工具类
//在src目录下创建一个文件 //文件名为 dbinfo.properties //将以下代码写入文件中 //这个文件成为配置文件 driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/myjdbc user=root password=123456 private static String driverClass; private static String url; private static String user; private static String password; // 使用静态代码块加载驱动 读取配置文件 static { // 使用系统类来读取配置文件 ResourceBundle rb = ResourceBundle.getBundle("dbinfo"); // 获取文件中的数据 driverClass = rb.getString("driverClass"); url = rb.getString("url"); user = rb.getString("user"); password = rb.getString("password"); // 利用集合读取文件 // Properties properties = new Properties(); // try { // FileInputStream fis = new FileInputStream("src/dbinfo.properties"); // properties.load(fis); // // 读文件 // driverClass = properties.getProperty("driverClass"); // url = properties.getProperty("url"); // user = properties.getProperty("user"); // password = properties.getProperty("password"); // } catch (IOException e) { // // } // 让驱动类只加载一次 try { Class.forName(driverClass); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 获取数据库的连接方法 public static Connection getConnection() throws SQLException, ClassNotFoundException { return DriverManager.getConnection(url, user, password); } // 关闭数据库的方法 如果没有结果集需要关闭 直接传空就好了 public static void closeALL(ResultSet resultSet, Statement statement, Connection connection) { // 关闭资源前 要做非空判断 防止空指针出现 if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { throw new RuntimeException("关闭失败"); } // 加快系统回收的速度 resultSet = null; } if (statement != null) { try { statement.close(); } catch (SQLException e) { throw new RuntimeException("关闭失败"); } // 加快系统回收的速度 statement = null; } if (connection != null) { try { connection.close(); } catch (SQLException e) { throw new RuntimeException("关闭失败"); } // 加快系统回收的速度 connection = null; } } // 创建测试类 测试 JDBC工具类 @Test public void testSelect() { Connection connection = null; Statement statement = null; ResultSet resultSet = null; // 获取连接 try { connection = JDBCUtil.getConnection(); statement = connection.createStatement(); String sql = "select * from users"; re a3dd sultSet = statement.executeQuery(sql); // 创建集合 ArrayList<User> arrayList = new ArrayList<>(); while (resultSet.next()) { // 创建User对象 User user = new User(); user.setId(resultSet.getInt("id")); user.setName(resultSet.getString("name")); user.setPassword(resultSet.getString("password")); user.setEMail(resultSet.getString("email")); user.setBirthday(resultSet.getDate("birthday")); // 放入集合当中 arrayList.add(user); } // 遍历查看 for (User user : arrayList) { System.out.println(user); } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { // 关闭资源 JDBCUtil.closeALL(resultSet, statement, connection); } }
相关文章推荐
- java基础---->jdbc数据库操作
- Java基础 JDBC操作数据库
- java基础---->jdbc数据库操作
- Java动态生成SQL语句通过JDBC达成数据库操作
- 【java基础:JDBC】采用DBUtils工具集进行数据库的增删改操作的demostration
- java 链接数据库sql jdbc 基础操作 增删改查
- java基础---->jdbc数据库操作
- 最基础的java JDBC连接数据库代码并关闭连接
- java学习数据库操作基础更规范的写法——————工具类
- [零基础学JAVA]Java SE应用部分-33.Java数据库编程(JDBC)之一 推荐
- JAVA jdbc方式直接操作数据库
- Java 数据库操作 JDBC
- java基础视频下载(三) jdbc_java连接数据库[天一时代
- java学习数据库操作基础
- 对于java初学者容易犯错误的地方,jdbc操作数据库
- Java数据库接口JDBC入门基础讲座
- java学习数据库操作基础更规范的写法——————调用类
- java-JDBC-ResultSet详解(java数据库操作)
- Java数据库接口JDBC基础教程之驱动设置
- JDBC基础教程之CallableStatement(怎样操作用java程序操作oracle的过程)