如何在不使用Hibernate的情况下在JDBC中提供数据库独立性.

我试图在属性文件的帮助下解决这个问题,但在属性文件中,我们只能处理数据库驱动程序问题.如果我想将MySQL切换到Oracle数据库,我需要更改我的所有查询.问题是如何在JDBC中使查询独立?

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class DBIndependencyExample {
    public static void main(String[] args) {
        try {
            Properties pros = new Properties();
            InputStream fis = new FileInputStream(
                    "D:\\Programs\\Eclipse\\DBIndependecyByPropertiesFile\\src\\connectdb.properties");
            pros.load(fis);
            String Drivername = pros.getProperty("k1");
            //System.out.println(Drivername);
            String url = pros.getProperty("k2");
            String un = pros.getProperty("k3");
            String pw = pros.getProperty("k4");
            Class.forName(Drivername);
            Connection con = DriverManager.getConnection(url, un, pw);
            System.out.println("Driver Is Loaded With" + Drivername);
            System.out.println("Connection is Opened");
            Statement smt = con.createStatement();
            String sql = pros.getProperty("k5");
            //System.out.println(sql);
            ResultSet rs = smt.executeQuery(sql);
            while (rs.next()) {
                System.out.println("username is:" + rs.getString(1) + " password is:" + rs.getString(2));
            }
            con.close();
            System.out.println("Connection is closed");
            fis.close();
        } catch (Exception e) {
            e.printstacktrace();
        }
    }
}

属性文件

//MysqL Connectivity 
//Start Properties File Code
k1=com.MysqL.jdbc.Driver
k2=jdbc:MysqL://localhost:3306/practice
k3=root
k4=root
k5=select * from student

//Oracle  Connectivity

k1=oracle.jdbc.driver.OracleDriver
k2=jdbc:oracle:thin:@localhost:1521/orcla
k3=scott
k4=manish       
k5=select * from dept

解决方法:

If i want to switch my MysqL to oracle database i need to change my
all query.

如果您的SQL查询仅依赖于ANSI sql而从不依赖于专有特定项(函数,关键字和…),那么您应该能够在不对查询进行任何更改的情况下从DBMS切换到另一个DBMS.
请注意,Hibernate不会将DBMS特性转换为另一个,例如将在Oracle中编写的DUAL表上的查询转换为MysqL方式.
Hibernate确保您的SQL查询在您不创建本机查询时可移植,Hibernate仍然提供这种可能性.

Here是最初版本的信息技术的原始sql ANSI草案和here下载链接数据库语言 – sql – 第1部分:框架(sql /框架)

相关文章

连接数据库的方式:第一种方式:ODBC:开放数据库连接是微软...
JDBCRequest 使用VariableNamesmysql:数据库连接池对象var...
 1.JDBCDBC(JavaDataBaseConnectivity):Java数据库连接技术...
1.需要jar包的支持:java.sqljavax.sqlmysql-conneter-java....
1.简介Activiti是一个业务流程管理(BPM)框架,它是覆盖了业务...
1.JDBC体系系统一组规范:接口JDBC接口(API)包括两个层次:...