楼主用hibernate 所以说就不需要在手动管理connection的AutoCommit属性了。不用触发器的话,也好办,不过可能麻烦一点。
假设你已经做好了表list1和list2 到对象list1和list2的映射。list1和list2配置成一对一映射,list2的主键也是list1的外键,生成机制由list1负责。级联关系cascade属性设置为all,也就是对list1 *** 作的时候hibernate会级联的 *** 作它的附着物list2
那么在 *** 作对象list1基础DAO中的曾删改查方法中,同时 *** 作list2对象即可。
以增加 *** 作为例:
比如 new出来一个list1对象,然后充填属性:
list1setName("张三");
list1setPwd("123456");
list1getList2setName(list1getName());
list1getList2setpwd(list1getPwd());
sessionsave(list1); //这里当持久化list1的时候,会级联把list2也持久了
提交transaction
关键问题还是配置,比较麻烦 容易出错。我对hibernate不是多了解,想的这个办法可能比较笨,应该还有好的办法来解决。等等高手来看看吧。
Java程序向数据库中插入数据,代码如下:
//首先创建数据库,(aess,oracle,mysql,sqlsever)其中之一,其中aess,sqlsever需要配置数据源(odbc);
//然后再eclipse中创建类(ConnDb,Test,TestBean)ConnDb功能为连接数据库,查询,插入,删除,修改数据的类,Test为含有main方法的测试类,TestBean为数据表中的字段属性及set,get方法
//以下是ConnDb代码:
packagedb;
importjavasqlConnection;
importjavasql;
import
javasqlResultSet;
importjavasql;
import
javasqlStatement;
importjavautilArrayList;
publicclassConnDb{
publicConnectionstartConn(Connectionconn){
try{
ClassforName("sunjdbcodbc");
conn=("jdbc:odbc:数据库","用户名","密码");
}catch(Exceptione){
Systemoutprintln("连接数据库时出现错误");
}
returnconn;
}
publicArrayList(Stringsql){
Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
ArrayListlist=newArrayList();
try{
conn=startConn(conn);
stmt=conn();
rs=stmt(sql);//sql为sql语句例如"selectfrom
表名",从main方法中传进来,这里用的是ArrayList类将查询结果存储起来
while(rsnext()){
TestBeantb=newTestBean();
tbsetTid(rsgetString("tid"));
tbsetTname(rsgetString("tname"));
tbsetTinfo(rsgetString("tinfo"));
listadd(tb);
}
}
catch(e){
//TODOAuto-generatedcatchblock
e();
}finally{
closeConn(rs,stmt,conn);
}
returnlist;
}
publicvoid(Stringsql){
Connectionconn=null;
Statementstmt=null;
try{
conn=
startConn(conn);
stmt=conn();
stmt(sql);
}
catch(e){
Systemoutprintln("修改,插入或者删除数据库数据时发生错误!");
}finally{
closeConn(stmt,conn);
}
}
publicvoidcloseConn(ResultSetrs,Statementstmt,Connectionconn){
try{
if(rs!=
null){
rsclose();
}
if(stmt!=null){
stmtclose();
}
if(conn!=null){
connclose();
}
}
catch(e){
//TODOAuto-generatedcatch
block
Systemoutprintln("关闭数据库的时候发生错误!");
}
}
publicvoidcloseConn(Statementstmt,Connectionconn){
try{
if(stmt!=null){
stmtclose();
}
if(conn!=null){
connclose();
}
}
catch(e){
//TODOAuto-generatedcatchblock
Systemoutprintln("关闭数据库的时候发生错误!");
}
}
}
你的sql有问题:
你针对Student表的每个字段都做了一次update *** 作,这样太耗性能,也不可取
update Student set ssex = "+ "'"+ SSex + "' , Sbirthday = "+ "'"+ birthday + "'
(其他字段) where SNo = "+ "'"+ SNo
注:一个sql语句可以同时更新多个字段
update Student set 字段1 = 值1, 字段2 = 值2 ,字段n = 值n where SNo = 'SNo '
statexecuteUpdate
里面有n个update语句,用一条就可以搞定,即上面整合的那条sql即可
你这完全是使用方法的错误
增加一个数据库连接不就行咯
同样的参数
连接两个数据库,完全可以做到
简单的说用jdbc连接第一个库 啥 URL CLASSDRIVER 等等
第二个库就如果参数相同,那么就共用,如果不同,就增加几项参数咯
*** 作和第一个一样
以上就是关于java相关 求方法 实现数据库数据同步全部的内容,包括:java相关 求方法 实现数据库数据同步、java中怎么向数据库插入数据(java怎么导入数据库)、java.sql.Statement stat = null;stat.executeUpdate(sql);没抛出异常,但无法更新数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)