链接数据库用到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数据库、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)