java编写的postgresql语句

9bfwbjaz  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(311)

我想为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;
}

如何将准备好的语句用于此代码?

jexiocij

jexiocij1#

这是一个非常广泛的问题,但多数据库兼容性的常用方法有两个:
将所有sql语句放在资源文件中,并在运行时加载相应的资源
如果语句或逻辑结构不同(需要不同的参数等),请为两个数据库编写逻辑,并根据所使用的数据库选择正确的路径。
一些数据库抽象层(hibernate、springjdbc)可以帮助您完成很多工作,但是您仍然需要非常清楚它们之间的区别和代码。

mqxuamgl

mqxuamgl2#

您可以通过一个java代码处理多个数据库,但如下所示,
每个数据库需要设置单独的连接
你可以用 PreparedStatement 进入你的 code 同样地,

String selectSQL = "select id, user_name from user where username = ?"
PreparedStatement preparedStatement = dbConnection.prepareStatement(selectSQL);

preparedStatement.setString(1, "userName");

ResultSet rs = preparedStatement.executeQuery(selectSQL);

相关问题