我希望得到
提供的用户信息SELECT SYS_CONTEXT ('USERENV', 'SESSION_USER') FROM DUAL;
和
SELECT SYS_CONTEXT ('USERENV', 'OS_USER') FROM DUAL;
在JAVA UDF for Oracle 11g中,没有建立JDBC连接并运行这些查询来从DUAL进行查询。
我尝试System.getProperty("user.name")
通过jvm读取当前的OS_user,但我认为我们不允许在数据库环境之外获取信息。
更一般地说,问题陈述是获取有关已登录数据库并使用该Java UDF的用户的信息(我们需要确定这些信息)?
答案 0 :(得分:0)
我通过使用"jdbc:default:connection"
找到了解决上述问题的方法,conn.close();
是由数据库本身维护的内部连接,它始终可用。注意我最后没有public static String doSQL() throws SQLException {
String result = new String();
String q1 = "SELECT SYS_CONTEXT('USERENV','SESSION_USER') FROM DUAL";
Connection conn =
DriverManager.getConnection("jdbc:default:connection");
PreparedStatement ps = conn.prepareStatement(
q1
);
ResultSet rs = ps.executeQuery();
while (rs.next())
result = rs.getString(1);
return "my udf says"+result;
}
,因为这是一个共享流,一旦关闭就关闭了所有数据库客户端。
int myWidth = 512;
int myHeight = 512;
int borderSize=20;
Glide.with(yourApplicationContext))
.load(youUrl)
.asBitmap()
.into(new SimpleTarget<Bitmap>(myWidth, myHeight) {
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
Bitmap bmpWithBorder = Bitmap.createBitmap(bitmap.getWidth() + borderSize * 2, bitmap.getHeight() + borderSize * 2, bitmap.getConfig());
Canvas canvas = new Canvas(bmpWithBorder);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(bitmap, borderSize, borderSize, null);
//Now you can use bmpWithBorder on ImageView you want
}
};