重赏之下必有勇夫:jdbc能访问本机数据库吗?

bmttmnych 2003-09-11 01:30:27
1、请问用java JDBC能访问本机上的oracle 9i数据库吗?(因为在家里学习
没有局域网环境,只好访问自己机器上安装的oracle)
2、下面的简单程序创建一个student表,为什么在局域网里成功地在服务器上
创建了student表,而无法在本机上的oracle里创建student表呢?(注:用在局域
网里时当然url用的是局域网服务器主机名而不是localhost,另外我自己本机上的
oracle 安装是正确的,因为能显示缺省的scott用户的各个表,网络服务名也应该
是正确的。)
3、我访问本机上的数据库,主机名用localhost,端口用1521,及程序中的url
以上三个变量用法正确吗?


程序如下:

import java.sql.*;

public class LocalhostTest{
public static void main(String[] args){
try{
DatabaseTest dt=new DatabaseTest("system","manager");
dt.createTable();
dt.insertInfo();
dt.close();
}catch(Exception e){}
}
}

class DatebaseTest{
private final static String drv="oracle.jdbc.driver.OracleDriver";
private final static String
dburl="jdbc:oracle:thin:@localhost:1521:myoracle";
Connection con;


public DatabaseTest(String user,String pass) throws Exception{
Class.forName(drv);
con =DriverManager.getConnection(dburl,user ,pass);
}


public void createTable(){
try{
Statement stm=con.createStatement();
String sql="CREATE TABLE student "+
"(name VARCHAR(20) NOT NULL," +
"age INT NOT NULL,"+
"PRIMARY KEY(name))";
stm.execute(sql);
stm.close();
}
catch (SQLException e){
e.printStackTrace(System.err);
}
}

public void insertInfo(){
try{
Statement stm=con.createStatement();
String sql1="INSERT INTO student VALUES ('mary',34)";
stm.execute(sql1);
String sql2=" INSERT INTO student VALUES ('william',23)";
stm.execute(sql2);
stm.close();
}
catch (SQLException e){
e.printStackTrace(System.err);
}
}

public void close()throws Exception{
con.close();
}
}
...全文
42 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bmttmnych 2003-09-11
  • 打赏
  • 举报
回复
我将main 方法catch(Exception e){}改为
catch(Exception e){e.printStackTrace();}后打印出了异常


一|执行java LocalTest后出现以下异常,请帮忙诊断一下:
java.lang.ClassNotFoundException:oracle.jdbc.driver.OralcleDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:198)
at java.security.Accesscontroller.doPrivileged(Native Method)
at java.net.URLClassLoader.findclass(URLClassLoader.java.186)
at java.lang.ClassLoader.loaderclass(ClassLoader .java.306)
at sun.misc.Laucher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
at java.ClassLoader.loaderClassInternal(ClassLoader.java:322)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:130)
at DatabaseTest.(init)(DatabaseTest.java:13)
二、我的环境变量CLASSPATH=.;d:\ClassPath
d盘ClassPath目录下有classes12,nls_charset12,ocrs12,ojdbc14等压缩文件和jar文件

中秋祝大家幸福快乐,请有空帮我看是什么原因,谢谢兄弟们!
l2g32003 2003-09-11
  • 打赏
  • 举报
回复
“CREATE TABLE student "+"(name VARCHAR(20) NOT NULL," +
"age INT NOT NULL,"+"PRIMARY KEY(name))";
改成下面的试试
“CREATE TABLE student "+"(name VARCHAR(20) PRIMARY KEY," +
"age INT NOT NULL,";
hdkkk 2003-09-11
  • 打赏
  • 举报
回复
当然可以
sensory 2003-09-11
  • 打赏
  • 举报
回复
可以的!你加你表前面的名自
如 scott.emp
bmttmnych 2003-09-11
  • 打赏
  • 举报
回复
可以确保上面字符串没错
不过我昨天连接测试已通过.主要是放火墙禁止访问网络,虽关了防火墙,也不行.后来我打开防火墙,
设置允许访问网络,再关掉防火墙就通过了.
Drate 2003-09-11
  • 打赏
  • 举报
回复
jdbc:oracle:thin:@localhost:1521:myoracle
---------

你确保上面的连接字符串没有弄错吧。。。
bmttmnych 2003-09-11
  • 打赏
  • 举报
回复
表名没有重复,
在sqlplus里的错误提示:没有student 表对象
以上程序编译能通过,在dos下执行java LocalhostTest,在dos窗口没有错误提示。不知你们访问过本机上的数据库没有,帮我实验一下好吗?
enhydraboy 2003-09-11
  • 打赏
  • 举报
回复
你把错误提示贴出来。
bzszp 2003-09-11
  • 打赏
  • 举报
回复
是不是表名重复了

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧