[英]Oracle 11g Express Java JDBC; Database Workspace
我在访问数据库所在的Oracle 11g Express Workspace
时遇到了一些困难。
我可以通过Class.forName("jdbc.oracle.driver.OracleDriver")
注册我的JDBC Driver
,并通过Connection con = DriverManager.getConnection("jdbc:oracle:thin:" + username + "/" + password + "@localhost:1521:xe")
成功Connection con = DriverManager.getConnection("jdbc:oracle:thin:" + username + "/" + password + "@localhost:1521:xe")
但无法进入包含我创建的数据库的工作区。
任何通过Statement smt = Connection.createStatement()
创建数据库的尝试都会产生java.lang.UnsupportedOperationException
。
我甚至不确定我是否连接到正确的地方。 我知道当我查看Oracle Database 11.2 XE参数时,它将db_name
列为xe
,我可以通过sys as sysdba
连接到它并使用我为Oracle 11g Express数据库建立的密码,但我无法进入工作空间当我创建一个数据库并使用ddl
和dml
语句来填充它时。
也许我根本不知道该做什么,因为我是JDBC的新手。 我检查了我的TNSNAMES.ORA文件,确实有一个XE
条目代表我的Oracle 11g Express以及代表Oracle数据库的其他条目。 我想我在那里我只是不知道该怎么做才能进入我创建的XE
数据库。
我用来执行SQL语句的代码如下:
Statement smt = null;
try {
smt = connection.createStatement();
String command = "CREATE table x(y varchar(2))";
smt.executeLargeUpdate(command);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage() + e.getCause());
}
您需要类路径上的ojbdc6.jar或等效项。 这也可能是其他一些问题,因此我将详细介绍一个有效的例子,希望能突出问题。
我使用以下配置和组件:
我执行以下步骤以从java类生成与oracle xe数据库的连接:
为Windows安装程序运行Oracle XE 32位,提供密码“password”。 然后运行services.msc以确认TNS列表器和XE服务都在运行。
然后在eclipse中创建一个新的java项目。 将ojbc6.jar作为外部jar添加到构建路径中。
然后我运行以下类(右键单击 - >运行为 - > java应用程序)来创建表:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class MyOracleTest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.OracleDriver");
String username = "sys as sysdba";
String password = "password";
Connection conn = null;
Statement st = null;
try{
conn = DriverManager.getConnection("jdbc:oracle:thin:" + username + "/" + password + "@localhost:1521:xe");
st = conn.createStatement();
String command = "CREATE table x(y varchar(2))";
st.executeUpdate(command);
}finally{
if(st != null){
st.close();
}
if(conn != null){
conn.close();
}
}
}
然后我使用sqlplus验证表的存在:
要访问工作空间中的对象,必须编写指定对象名称的SQL语句,其工作空间名称如“workspacename.objectname”。
例如
如果您已创建工作区并将其命名为“XESPACE”并在工作区内创建了一个表“STUDENT”,那么要从JDBC访问STUDENT表,请遵循以下代码。
步骤1:将JDBC驱动程序注册为Class.forName(“oracle.jdbc.driver.OracleDriver”) 。
第2步:使用DriverManager.getConnection打开连接(“jdbc:oracle:thin:@ 127.0.0.1:1521:XE”,
“用户名”,“密码”) 。
其中127.0.0.1代表localhost。
第3步:现在访问工作区内的表,按如下方式编写sql查询
“ 从XESPACE.STUDENT中选择* ”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.