PostgreSQL的Java Prepared语句

时间:2016-03-28 07:56:56

标签: java postgresql

我想为2个数据库创建简单的应用程序 - Oracle和PostgreSQL。有没有办法为所有数据库使用一个Java代码?我试过这个:

public String init()
{
    String user_name = null;
    try
    {
        Context ctx = new InitialContext();
        if (ctx == null)
            throw new Exception("Boom - No Context");

        DataSource ds = (DataSource) ctx.lookup("jdbc/DefaultDB");

        if (ds != null)
        {
            Connection conn = ds.getConnection();

            if (conn != null)
            {
                Statement stmt = conn.createStatement();
                ResultSet rst = stmt.executeQuery("select id, user_name from user where username = " + user);
                if (rst.next())
                {
                    user_name = rst.getString("user_name");
                }
                conn.close();
            }
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

    return user_name;
}

如何使用此代码使用预准备语句?

2 个答案:

答案 0 :(得分:0)

这是一个非常广泛的问题,但多数据库兼容性的常用方法有两个:

  1. 将所有SQL语句放在资源文件中并在运行时加载适当的资源
  2. 如果语句或逻辑结构不同(需要不同的参数等),请为两个数据库编写逻辑,并根据您使用的数据库选择正确的路径。
  3. 一些数据库抽象层(Hibernate,Spring JDBC)可以帮助完成很多工作,但是你仍然需要非常了解它们之间的差异和代码。

答案 1 :(得分:0)

  

您可以通过单个java-Code使用多个数据库,但是   以下方式,

     
      
  1. 需要设置每个数据库的单独连接
  2.   

您可以String selectSQL = "select id, user_name from user where username = ?" PreparedStatement preparedStatement = dbConnection.prepareStatement(selectSQL); preparedStatement.setString(1, "userName"); ResultSet rs = preparedStatement.executeQuery(selectSQL); 同样使用bower_components

var obj = {
  foo: 0,
  bar: 1
};

Object.observe(obj, function(changes) {
  console.log(changes);
});

obj.baz = 2;
// [{name: 'baz', object: <obj>, type: 'add'}]

obj.foo = 'hello';
// [{name: 'foo', object: <obj>, type: 'update', oldValue: 0}]