重赏之下必有勇夫:jdbc能访问本机数据库吗?
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();
}
}