java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。

java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。,第1张

链接数据用到JDBC,一般链接数据库都要用到数据库驱动、链接字符串、登录名、登录密码。这4个属性可以提取到一个父类中,每一种数据库写一个类继承父类。要是这些都没问题了,就可以用楼上哥们儿说的,简单工厂模式,简单工厂是用到了java中的多态特性。 import javasqlConnection; public abstract class BaseConnect { public BaseConnect(String driverClass, String url, String loginName, String password) { super(); thisdriverClass = driverClass; thisurl = url; thisloginName = loginName; thispassword = password; } protected String driverClass; protected String url; protected String loginName; protected String password; public abstract void initDriver(); public abstract Connection getConnect(); public abstract void closeConnect(Connection conn); } import javasqlConnection; import javasqlDriverManager; import javasqlSQLException; public class OraclConnect extends BaseConnect { public OraclConnect(String driverClass, String url, String loginName, String password) { super(driverClass, url, loginName, password); // TODO Auto-generated constructor stub } @Override public void initDriver() { try { ClassforName(driverClass); } catch (ClassNotFoundException e) { eprintStackTrace(); } } @Override public Connection getConnect() { try { return DriverManagergetConnection(url, loginName, password); } catch (SQLException e) { eprintStackTrace(); } return null; } @Override public void closeConnect(Connection conn) { try { if (conn != null && !connisClosed()) { connclose(); } } catch (SQLException e) { eprintStackTrace(); } } } 以此类推,上面代码是我随便一写,你自己再改进下。蓝屏

import javasqlResultSet; //都是导入一些下面需要用到的类

String ConnStr="jdbc:microsoft:sqlserver://WINJUE:1433;DatabaseName=library";//jdbc连接数据库url

public sqlServer() {

try {

ClassforName(DBDriver)newInstance(); //加载SQLServer驱动程序,DBDriver是你上面的代码;

conn=DriverManagergetConnection(ConnStr,"sa","sa"); //和数据库建立连接,ConnStr里面的://WINJUE:1433;DatabaseName=library 分别是主机地址:端口号;你自己建的数据库(database)

}

catch(SQLException e) { //捕获SQL异常

Systemoutprintln(egetMessage()); //要是出现异常,捕获到后,这句代码会把异常的信息(出错的原因之类的)打印出来。

}

catch(Exception e) { //捕获异常,这个是总的,所以不能和上面的顺序颠倒,先小到大,我连ORACLE和MYSQL,这个我通常不要,只须捕获SQL异常就OL

Systemoutprintln(egetMessage());

}

}

public Connection getConn(){ //获取连接方法

return conn;

}

public void insert(String sql) {//增删改

try {

Statement stm=conncreateStatement(); 调用conn下的方法,创建Statement对象

stmexecuteUpdate(sql);//调用Statement下的方法执行SQL语句

Systemoutprintln(" *** 作成功");

}

catch(Exception e){

Systemoutprintln(egetMessage()); //如上

}

}

public ResultSet query(String sql){ //查询

try{

Statement stm=conncreateStatement(ResultSetTYPE_SCROLL_SENSITIVE,ResultSetCONCUR_UPDATABLE);

rs=stmexecuteQuery(sql); //如上

}

catch(Exception e){

Systemoutprintln(egetMessage());

}

return rs;

}

public static void main(String args[]){

sqlServer conn=new sqlServer(); //创建sqlServer,就是你上面的类,以便调用里面的方法

ResultSet rs=connquery("select from Orders"); //调用query方法,执行SQL语句后,把结果保存到结果集里

//conninsert("delete from BookInfo where BookName =" +"\'悟空传\'");

//conninsert("insert into BookInfo (BookID,BookName,Author,KeyWord) values (14445678,'悟空传','今何在','孙悟空')");

try{

while(rsnext()){ //循环,判断结果集里的记录,一条条往下走,是否还有下一条记录,若是返回真,继续走

Systemoutprint(rsgetString("OrderID"));

//Systemoutprint(rsgetString("U_age"));

}

rsclose() ; //关闭结果集

}

catch (Exception e){

Systemoutprintln(egetMessage());

}

}

}

注:

TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。

TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至能进行特定定位,例如移至列表中的第四个记录或从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。

TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 相同,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。

以上就是关于java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。全部的内容,包括:java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。、JAVA连接SQL数据库、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9337015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存