发布于2021-06-12 13:19 阅读(723) 评论(0) 点赞(30) 收藏(0)
- package com;
- import java.sql.*;
- public class lxc {
- public static void main(String[] args) {
- // /useUnicode表示允许使用自定义的Unicode, //characterEncoding是给定自定义的Unicode是什么,解决乱码或问号的问题
- String url = "jdbc:mysql://127.0.0.1:3306/java_pro?useUnicode=true&characterEncoding=utf8";
- String user = "root";
- String password = "lvxingchen@123";
-
- Connection conne = null;
- Statement sta = null;
- try {
- // 注册驱动
- Class.forName("com.mysql.jdbc.Driver");
- // 获取连接 - 连接mysql数据库
- try {
- conne = DriverManager.getConnection(url, user, password); // 获取连接对象
- sta = conne.createStatement();// createStatement 专门执行sql语句的
- String sql = "insert into user(name, age, address) values('吕星辰', 20, '烟台市')";
- // 专门执行DML语句的,返回的是影响数据库的数据条数
- int count = sta.executeUpdate(sql);
- System.out.println(count == 1 ? "插入成功" : "插入失败");
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- } finally {
- // 在finally中释放资源,并且按顺序依次关闭
- try {
- if(sta != null) {
- sta.close();
- }
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }
- try {
- if(conne != null) {
- conne.close();
- }
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }
- }
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
上边我们可以把全局的变量抽离出来,放在properties文件中:
项目目录
db.properties与com同级
db.properties
- url=jdbc:mysql://127.0.0.1:3306/java_pro?useUnicode=true&characterEncoding=utf8
- user=root
- password=lvxingchen@123
- driver=com.mysql.jdbc.Driver
在项目文件中引入通过ResourceBundle加载配置文件
- package com;
- import java.sql.*;
- import java.util.ResourceBundle;
-
- public class lxc {
- public static void main(String[] args) {
- ResourceBundle resourceBundle = ResourceBundle.getBundle("db");
- String driver = resourceBundle.getString("driver");
- String url = resourceBundle.getString("url");
- String user = resourceBundle.getString("user");
- String password = resourceBundle.getString("password");
-
- Connection conne = null;
- Statement sta = null;
- try {
- Class.forName(driver);
- try {
- conne = DriverManager.getConnection(url, user, password); // 获取连接对象
- sta = conne.createStatement();// createStatement 专门执行sql语句的
- String sql = "insert into user(name, age, address) values('吕星辰', 20, '烟台市')";
- int count = sta.executeUpdate(sql);
- System.out.println(count == 1 ? "插入成功" : "插入失败");
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- } finally {
- try {
- sta.close();
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }
- try {
- conne.close();
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }
- }
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
db.properties 配置文件
- // db.properties
- url=jdbc:mysql://127.0.0.1:3306/java_pro?useUnicode=true&characterEncoding=utf8
- user=root
- password=lvxingchen@123
- driver=com.mysql.jdbc.Driver
封装JDBCutil.java文件,下边只是简单的封装,查询结果集直接拼接字符串打印的:
- package com;
-
- import java.sql.*;
- import java.util.Arrays;
- import java.util.ResourceBundle;
-
- /**
- * @步骤
- * (1)注册驱动
- * (2)获取连接
- * (3)获取数据库对象
- * (4)执行sql语句
- * (5)处理查询结果集
- * (6)释放资源
- * JDBC的sql语句不需要以分号结尾。
- */
-
- /**
- * @对外暴露的方法:
- * (2)public void getAll(String sql) 获取数据
- * (3)public void insertOrDelOrEdit(String sql) 插入、修改、删除数据
- */
- public class JDBCutil {
- private final static String url;
- private final static String user;
- private final static String password;
- public Connection driverManager = null; // 获取数据库连接对象
- private static JDBCutil jdbc;
-
- // 静态代码块注册驱动 - 在类加载的时候执行一次。
- static {
- ResourceBundle resourceBundle = ResourceBundle.getBundle("db");
- String driver = resourceBundle.getString("driver");
- url = resourceBundle.getString("url");
- user = resourceBundle.getString("user");
- password = resourceBundle.getString("password");
- try {
- Class.forName(driver); // 注册驱动
- jdbc = new JDBCutil();
- // jdbc.getConnection(); // 连接数据库,及获取数据库对象
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- // 子类会重写父类的main方法,所以父类main方法不会执行!
- // public static void main(String[] args) {
- // System.out.println("执行了+++++++++++++++++++++++");
- // new JDBCutil().getConnection(); // 连接数据库
- // }
- // 获取数据库连接对象
- private void getConnection() {
- try {
- jdbc.driverManager = DriverManager.getConnection(url, user, password);
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- System.out.println("连接失败");
- }
- System.out.println("****************************连接成功************************");
- }
- // 查询
- public void getAll(String sql) {
- Statement statement = null;
- ResultSet resultSet = null;
- try {
- System.out.println("jdbc.driverManager:"+jdbc.driverManager);
- // 这地方在加一层判断,因为增删改查完之后,会关闭数据库连接
- if(jdbc.driverManager == null) {
- jdbc.getConnection();
- }
- statement = jdbc.driverManager.createStatement();
- // 专门执行查询语句 executeQuery()
- resultSet = statement.executeQuery(sql); // 返回的是一个查询结果集 - 结果集也需要关闭
- // 遍历查询结果集:
- // resultSet.next() 方法 - 让光标往下移动一行,如果走到的的这一行有数据,则返回true,
- // 则把这一行数据分贝取出来即可;继续往下移动下一行;依次循环,如果没数据next() 方法会返回false,停止循环
- boolean status = resultSet.next();
- int count = 0;
- System.out.println("***********************************************************");
- while(status) {
- count ++;
- // 取数据
- // .getString() 不管数据库里边的数据类型是什么,都以字符串形式返回!getTnt() 取出的是数字类型,别的类型,请查看文档 ··· ···
- // .getString(1): 通过下标取数据(注意下边从1开始);
- // .getString("name"): 通过列字段取数据;
- String name = resultSet.getString("name");
- int age = resultSet.getInt("age");
- String address = resultSet.getString("address");
- System.out.println("查询出的数据结果为:"+name+"-"+age+"-"+address);
- status = resultSet.next();
- }
- System.out.println("***********************一共"+count+"条数据!************************");
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }finally {
- if(resultSet != null) {
- try {
- resultSet.close(); // 关闭结果集
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }
- }
- if(statement != null) {
- try {
- statement.close();
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }
- }
- // 关闭数据库连接
- jdbc.close();
- }
- }
- // 插入、删除、修改 - sql语句执行,暂时无返回数据
- public void insertOrDelOrEdit(String sql) {
- Statement statement = null;
- try {
- // 这地方在加一层判断,因为增删改查完之后,会关闭数据库连接
- if(jdbc.driverManager == null) {
- jdbc.getConnection();
- }
- statement = jdbc.driverManager.createStatement(); //createStatement 专门执行sql语句的
- int count = statement.executeUpdate(sql);
- System.out.println(count == 1 ? "成功" : "失败");
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }finally {
- if(statement != null) {
- try {
- statement.close();
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }
- }
- // 关闭数据库连接
- jdbc.close();
- }
- }
- // 关闭数据库连接
- private void close() {
- try {
- if(jdbc.driverManager != null) {
- jdbc.driverManager.close();
- jdbc.driverManager = null;
- }
- } catch (SQLException throwables) {
- throwables.printStackTrace();
- }
- }
- }
作者:忽明忽灭
链接:http://www.javaheidong.com/blog/article/221906/e9835c9e55c0d2a01147/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!