链接数据库用到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(); } } } 以此类推,上面代码是我随便一写,你自己再改进下。蓝屏
通过字符流把一次性把所有数据读出来
把数据split("|")后 放到一个数组里 下标为n%3==0的为第一种类型的数据 为1的是第二种类型
在连接数据库把数组里的数据insert到数据库里 就用原始的jdbc插入就很快了
首先说明一下序列化的知识:java中的序列化()机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需要的时候,可以根据字节流中的信息来重构一个相同的对象
序列化机制在java中有着广泛的应用,EJB、RMI等技术都是以此为基础的
序列化机制是通过java
io
类和java
io
类来实现的
在序列化(serialize)一个对象的时候,会先实例化一个对象,然后调用其writeObject()方法;在反序列化(deserialize)的时候,则会实例化一个对象,然后调用其readObject()方法
上面您的错误,就是在于有一个或者几个没有"序列化"的数据,导致没有办法创建输出流,导致发生的java
io
之所以要序列化,我猜测是因为您的数据里面存在一个对象型的数据,但是该对象没有实现序列化
比如:您有一个字段为address,这个字段您是通过一个类Address来描述的,Address里面可能有province、city、street等等属性或者一些setter和getter,如果这个类,没有实现序列化,往往会出现这个问题
毕竟没有看到程序,是我的一个猜测,请检查一下程序或者发出来进行进一步讨论
最简单的SQL语句:备份与还原SQL Server自带的数据库
在服务器上备份:
use Northwind
Backup database Northwind to disk='d:\Northwind_bakdat' with init
RESTORE DATABASE NorthNwind FROM DISK = 'd:\Northwind_bakdat'
备份数据库这一 *** 作在客户机上实现
客户机:machine
共享目录:share (要完全共享,可写权限)
backup:
bakcup database dbname to disk='\\machine\share\databak' with init
\\machine\share目录要有写权限。
restore:
restore database dbname from disk='\\machine\share\databak'
//
备注:restore 语句有很多的选项,可以查看企业管理器的在线帮助。如下
with replace, move 'dbname_dat' to 'c:\mssql7\data\dbnamemdf',
move 'dbname_log' to 'c:\mssql7\data\dbnamelog'
其中'c:\mssql7\data\'是服务器的目录,这点要注意
备份与还原数据库的相关内容:
SQL Server 70数据库备份有四种:完全数据库备份、增量数据库备份、事务日志备份、数据库文件或文件组备份。在数据库崩溃时,应该首先尝试备份事务日志(这一点很重要),然后恢复最后的数据库备份、该次数据库备份后的所有增量备份,最后恢复事务日志备份,这样可以将数据库恢复到崩溃前的状态。
备份是定期的,而不是实时的,所以利用备份并不能完全恢复数据库,它只能将数据库恢复到制作备份的那一刻 数据库日志是实时的,他忠实的记录下所有对数据库的更新 *** 作。因此,当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(大部分数据),然后运行数据库日志,即将备份后所做的 *** 作重新在做一遍,从而将数据库完全恢复。
--备份完整的数据库---------------------------------------------------------------
//创建一个备份设备:
1 Create the backup device for the full MyNwind backup///
USE master
EXEC sp_addumpdevice 'disk', 'MyNwind_2', 'c:\mssql7\backup\MyNwind_2dat'
2 Back up the full MyNwind database
BACKUP DATABASE MyNwind TO MyNwind_2
--备份数据库的日志---------------------------------------------------------------
--1 Create the log backup device
USE master
EXEC sp_addumpdevice 'disk', 'MyNwindLog1', 'c:\mssql7\backup\MyNwindLog1dat'
--2 Update activity has occurred before this point Back up the log of the MyNwind database
BACKUP LOG MyNwind TO MyNwindLog1
try
AdoQuery1Close;
AdoQuery1SQLClear;
AdoQuery1SQLAdd('backup database pubs');
AdoQuery1SQLAdd('to disk='+''''+edtPathText+'''');
AdoQuery1ExecSQL;
except
ShowMessage('备份数据库失败!');
exit;
end;
SQL server的备份
=========================================================================
=========================================================================
备份:
with adocommand_restore do//用ADocommand控件
begin
CommandText:='use Master';//
Execute;
CommandText:='execute sp_helpdevice';//系统存储过程
Execute ;
CommandText:='backup database '+'db_name'+' to disk='''+FileName+''' with init';//这行应当是这样
Execute ;
CommandText:='Use '+'db_name';//这行应当是这样
Execute ;
applicationMessageBox('已经成功备份数据库','数据库备份',MB_OK + MB_ICONINFORMATION);
end;
恢复:
with adocommand1 do//用AdoCommand控件
begin
CommandText:='use Master';
Execute;
CommandText:='execute sp_helpdevice';
Execute ;
CommandText:='Restore database '+'db_name'+' From disk='''+'c:\data1bak'+''' with replace';//这行应当是这样
Execute ;
CommandText:='Use '+'db_name';//这行应当是这样
Execute ;
applicationMessageBox('已经成功恢复数据库','数据库恢复',MB_OK + MB_ICONINFORMATION);
end;
注:db_name指数据库的名称
这种好像办不到,因为你不调动java,谁去判断数据库变化没啊?所以应该是调动java后,数据库变化,java处理的数据也变化,就像web程序,增删改查,只要有改变,刷新一下页面就能看到,不用restart。
首先得弄清楚 你的插入是对同一数据库 还是不同数据库的 *** 作数据量大的时候 是否要求即时性 是否牵扯到事物
本人推荐 做一个跑批程序 进行同步数据 这样能提高代码性能 以及程序性能 当然 你所说的瓶颈 无非就是大数据量对数据库的 *** 作次数 以及海量数据造成程序效率的一个瓶颈
以上就是关于java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。全部的内容,包括:java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。、急急急!java实现将txt文件数据导入数据库中。千万级别的数据。找效率方法。、在java里如何使用数据库中的序列(java中的序列化)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)