java数据库访问优化(mysql为例)

1.编写属性文件

为了便于后期维护,在编写DBUtil工具类之前,通常将连接的数据库的参数信息保存在属性文件中。

在项目的根目录下创建一个config目录,并添加一个属性文件mysql.properties,该文件是以"键-值"对形式来保存连接Oracle数据库的配置信息,内容格式如下:

driver= ...
    url= ...
    user= ...
    password= ...

为了读取属性文件中的配置信息,需要编写一个Config类,在该类中通过java.util.Properties类的get()方法来获取指定"键"所对应的"值"。
代码如下:

 package practice;
    import java.io.*;
    import java.util.*;
    public class Config {
        private static Properties p=null;
        static {
            try {
                p =new Properties();
                p.load(new FileInputStream("配置文件存在路径mysql.properties"));
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
        public static String getValue(String key){
            return p.getProperty(key).toString();
        }
    }

2.编写DBUtil类

主要实现数据库连接,释放资源,查询,增删改操作。
代码如下:

  package practice;
    import java.sql.*;
    public class DBUtil {
            Connection conn=null;
            PreparedStatement pstmt=null;
            ResultSet rs=null;
            /*得到数据库连接*/
            public Connection getConnection() throws Exception{
                String driver=Config.getValue("driver");
                String url=Config.getValue("url");
                String user=Config.getValue("user");
                String pwd=Config.getValue("password");
                System.out.println("driver :"+driver);
                System.out.println("url :"+url);
                System.out.println("user :"+user);
                System.out.println("pwd :"+pwd);
                try{
                    Class.forName(driver);
                    conn=DriverManager.getConnection(url,user,pwd);
                    return conn;
                }catch(Exception e) {
                    throw new SQLException("驱动错误或连接错误!");
                }

            }
            /*释放资源*/
            public void closeAll() {
                if(rs!=null) {
                    try {
                        rs.close();
                    }catch(Exception e) {
                        e.printStackTrace();
                    }
                }
                if(pstmt!=null) {
                    try {
                        pstmt.close();
                    }catch(Exception e) {
                        e.printStackTrace();
                    }
                }
                if(conn!=null) {
                    try {
                        conn.close();
                    }catch(Exception e) {
                        e.printStackTrace();
                    }
                }
            }
            /*执行SQL语句,可以进行查询*/
            public ResultSet executeQuery(String preparedSql ,String[] param) {
                try {
                    pstmt=conn.prepareStatement(preparedSql);
                    if(param!=null) {
                        for (int i=0;i<param.length;i++) {
                            pstmt.setString(i+1,param[i]);
                        }
                    }
                    rs=pstmt.executeQuery();

                }catch(Exception e) {
                    e.printStackTrace();
                }
                return rs;
            }
            /*执行SQL语句,可以进行赠,删,改的操作,不能执行查询*/
            public int executeUpdate (String prepareSql , String[] param) {
                int num=0;
                try {
                    pstmt=conn.prepareStatement(prepareSql);
                    if(param!=null)
                    {
                        for (int i=0;i<param.length;i++) {
                            pstmt.setString(i+1,param[i]);
                        }
                    }
                    num=pstmt.executeUpdate();
                }catch(Exception e) {
                    e.printStackTrace();
                }
                return num;
            }
    }

3.使用DBUtil类
代码如下:

 package practice;
    import java.sql.*;

    public class DBDmo {
        public static void main(String args[]) {
            String selectSql="select id,username,password,sex from userdetails";
            String insertSql="insert into userdetails(id,username,password,sex) values(?,?,?,?)";
            String updateSql="update userdetails set password=? where username=?";
            String deleteSql="delete from userdetails where username=?";
            DBUtil db=new DBUtil();
            try {
                //连接数据库
                db.getConnection();
                //查询并显示原来的数据
                ResultSet rs=db.executeQuery(selectSql, null);
                System.out.println("----原来数据----");
                while(rs.next()) {
                    System.out.println("行" +rs.getRow() +":" + rs.getInt(1)+ "\t"
                +rs.getString(2)+"\t"+rs.getString(3)+"\t" +(rs.getInt(4)==1? "男":"女"));
                }
                System.out.println("------------");
                //执行添加
                int count=db.executeUpdate(insertSql, new String[] {"9","Rose","123456","0"});
                System.out.println("添加"+count+"行!");
                count=db.executeUpdate(updateSql, new String[] {"686868","Tom"});
                System.out.println("修改"+count+"行!");
                //执行删除
                count=db.executeUpdate(deleteSql,new String[] {"lisi"});
                System.out.println("删除"+count+"行!");
                //查询并显示更新后的数据
                rs=db.executeQuery(selectSql, null);
                System.out.println("----更新后的数据-----");
                while(rs.next())
                {
                    System.out.println("行"+rs.getRow()+":"+rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"
                            +(rs.getInt(4)==1? "男":"女"));
                }
                System.out.println("---------\n");
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                db.closeAll();
            }
        }
    }

原文地址:https://www.cnblogs.com/xfy9/p/10688976.html

时间: 2024-10-28 18:52:33

java数据库访问优化(mysql为例)的相关文章

自己写好的pdo数据库抽象层 mysql为例

class pdo_database{ function __construct($type_database,$host_name,$dbname,$user_role,$pass_role,$sql){ $dbms=$type_database; //数据库类型 Oracle 用ODI,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数了 $host=$host_name; //数据库主机名 $dbName=$dbname;    //使用的数据库 $user=$user_r

Java知多少(111)几个重要的java数据库访问类和接口

修改数据表记录也有3种方案. 一.使用Statement对象 实现修改数据表记录的SQL语句的语法是:    update表名 set 字段名1 = 字段值1,字段名2 = 字段值2,……where特定条件例如: update ksInfo set 姓名 = ‘张小卫’where 姓名 = ‘张大卫’ 先创建一个SQL语句,然砶调用Statement对象的executeUpdate()方法.例如, 1 sql = “update ksInfo set 姓名 = ‘”+txtName.getTex

Java 数据库访问层

最近项目中需要对mysql进行操作,数据库的知识早在本科毕业那会就忘光了,这几年开发都没接触到数据库的操作. 借这个机会重新学习,数据库访问层是对数据库操作的一个封装,屏蔽底层的数据操作细节,通过使用DAO对数据库进行增删改查操作. 本文将以项目中的一小部分为例,介绍如何编写数据库访问层: 1. 实体类对象 1 public class CheckInfo { 2 private Integer id; 3 private String userName; 4 private Timestamp

java数据库访问—JdbcTemplate方式(模板设计模式)

前面总结中分别使用了单纯的jdbc以及jdbc配合数据库连接池的方式进行了简单的数据库查询操作,从代码编写的复杂度以及性能两个方面来看使用数据库连接池都好于用单纯的jdbc.另外,在上述两种方式中我们也看到了很多的重复代码,比如获取connection.获取statement,关闭connection.关闭statement等,这些代码在我们每一次的数据库操作中都是重复的,是否有更好的屏蔽这种重复操作的方式呢?这篇文章给出答案. 通用的操作流程如下: 在流程中只有执行sql在每次数据库操作中是不

Java数据库操作(MySQL与SQLserver)

在java编程开发中,数据库的开发是重头戏. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品: SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS). Jar包下载 java数据库的连接需要依赖外部jar包,所以需要下载后进行:构建路径->配置构建路径->库->添加JAR->应用->确定 SQLserver: https://blog-static.cnblogs.com/files/d

Java数据库访问小结

1.JDBC访问方法 DBHelper类访问数据库,Dao类写数据访问,View类进行应用,初学实例图书管理系统. package util; import java.sql.Connection; import java.sql.DriverManager; public class DBHelper { private static Connection conn; private static final String DBurl="jdbc:mysql://localhost:3306/

java数据库访问(四)—Mybatis

前述的几种java访问数据库的方式: jdbc是最原始的方式,使用比较繁琐: JdbcTemplate方式相对方便性有一些提高,但在工程应用中仍然很不方便. 接下来继续记录使用持久化框架来进行数据库操作,本文记录使用Mybatis进行记录的的简单示例: 1.定义 官网的定义: MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mapp

java数据库访问类和接口

编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中用于管理数据库驱动程序的类.通常,应用程序只使用类DriverManager的getConnection()静态方法,用来建立与数据库的连接,返回Connection对象: static Connection getConnection(String url,String username,Stri

Java知多少(107)几个重要的java数据库访问类和接口

编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中用于管理数据库驱动程序的类.通常,应用程序只使用类DriverManager的getConnection()静态方法,用来建立与数据库的连接,返回Connection对象: static Connection getConnection(String url,String username,Stri