我在访问数据库所在的Oracle 11g Express Workspace
时遇到了一些困难。
我可以通过JDBC Driver
注册我的Class.forName("jdbc.oracle.driver.OracleDriver")
并通过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());
}
答案 0 :(得分:1)
您需要类路径上的ojbdc6.jar或等效项。这也可能是其他一些问题,因此我将详细介绍一个有效的例子,希望能突出问题。
我使用以下配置和组件:
我执行以下步骤以从java类生成与oracle xe数据库的连接:
为Windows安装程序运行Oracle XE 32位,提供密码'密码'。然后运行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验证表的存在:
答案 1 :(得分:1)
要访问工作空间中的对象,您必须编写指定对象名称的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中选择* ”