连接数据库并进行增删改查

tech2022-08-01  126

封装数据库连接增删改和查询

创建一个JDBCUtil类,记得导入jar包

public class JDBCUtil { //本地数据库 private final static String URL = "jdbc:mysql://localhost:3306/bj"; //用户名 private final static String USER = "root"; //密码 private final static String PWD = "123456"; //使用静态代码块,每次JDBCUtil类加载时就会加载驱动 static { try { // 1、加载驱动:通过反射方式找具体类 Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 数据库连接 * @return */ public static Connection geConnection() { Connection connection = null; try { //2、创建连接对象 url=jdbc:mysql://localhost:3306/bj connection = DriverManager.getConnection(URL, USER, PWD); } catch (SQLException e) { e.printStackTrace(); } return connection; } /** * 数据库增删改 * @param sql 数据库的sql语句 * @param params Object类型数组 * @return */ public static int myUpdate(String sql, Object[] params) { Connection connection = null; // 3、创建声明语句对象,使用PreparedStatement防止sql注入 PreparedStatement pStatement = null; connection = geConnection(); //没有修改成功则返回-1 int result = -1; try { pStatement = connection.prepareStatement(sql); //判断数组是否为null或者为长度为0的数组 if (params != null && params.length>0) { for (int i = 0; i < params.length; i++) { //从1添加数据库每个字段 pStatement.setObject(i + 1, params[i]); } } //执行sql,返回一个int类型的值,返回的是影响的行数 result = pStatement.executeUpdate(); return result; } catch (SQLException e) { e.printStackTrace(); } return result; } /** * 数据库查询 * @param sql * @param params * @return */ public static ResultSet myQuery(String sql, Object[] params) { Connection connection = null; PreparedStatement pStatement = null; //如果查询不到即返回null ResultSet rSet=null; connection = geConnection(); try { pStatement = connection.prepareStatement(sql); if (params != null && params.length>0) { for (int i = 0; i < params.length; i++) { pStatement.setObject(i + 1, params[i]); } } //返回一个结果集。 rSet= pStatement.executeQuery(); return rSet; } catch (SQLException e) { e.printStackTrace(); } return rSet; } /** * 关闭资源 * @param pStatement * @param resultSet */ public static void closeUtil(PreparedStatement pStatement,ResultSet resultSet) { try { if(pStatement !=null){ pStatement.close(); } if(resultSet != null){ pStatement.close(); } if(geConnection()!=null){ geConnection().close(); } } catch (Exception e) { e.printStackTrace(); } } }

创建一个数据库user

创建一个Main测试增删改类

public class Main { public static void main(String[] args) { //修改数据的sql,每有一个?Object类型数组需要传入一个值,且需要对应 String sql="update user set user_pwd=? where user_name=?"; Object[] params={"123456nice","张三"}; //删除的sql // String sql="delete from user where user_name=? and user_pwd=?"; // Object[] params={"管理员","123456"}; //增加的sql // String sql="insert into user(id,user_name,user_pwd) values(?,?,?)"; // Object[] params={11,"张三","123456nice"}; //执行sql int result= JDBCUtil.myUpdate(sql, params); if(result>0){ System.out.println("成功 影响行数为: "+result); } } }

修改数据的结果:成功 影响行数为: 2

创建一个Main测试查询类

public class Main { public static void main(String[] args) { String sql2 = "select * from user "; //Object[] params={"123456nice","张三"}; ResultSet resultSet = JDBCUtil.myQuery(sql2, null); // 使用集合取值 // ArrayList里面存放map List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); try { // 判断当前是否存在值 while (resultSet.next()) { // 使用HashMap进行键值存值 Map<String, Object> map = new HashMap<String, Object>(); // 键->对数据库的字段说明 值->数据库对应字段的值 map.put("id", resultSet.getInt("id"));// int类型使用getInt map.put("user_name", resultSet.getString("user_name")); map.put("user_pwd", resultSet.getString("user_pwd")); list.add(map); } // foreach for (Map<String, Object> map : list) { System.out.println(map); } } catch (SQLException e) { e.printStackTrace(); } } }

查询结果,还可以通过其他方法取值

{user_name=猎人, id=1, user_pwd=123456} {user_name=张三, id=2, user_pwd=123456nice} {user_name=张酸酸, id=3, user_pwd=789456} {user_name=张刘2, id=4, user_pwd=1234789} {user_name=张三, id=11, user_pwd=123456nice} {user_name=张三, id=1123, user_pwd=123456nice}

最新回复(0)