java資料庫更新
『壹』 java實現自動更新數據功能。JAVA或者資料庫實現都可。
資料庫的話你可以寫一個觸伍掘腔發器,
java代碼的話:spring的schles和腔衫quartz設置定時任散明務
『貳』 用java實現對兩資料庫的數據同步更新,怎麼來做
首先得弄清楚 你的插入是對同一資料庫 還是不同資料庫的操作數據量大的時候 是否要求即時性 是否牽扯到事物
本人推薦 做一個跑批程序 進行同步數據 這樣能提高代碼性能 以及程序性能 當然 你所說的瓶頸 無非就是大數據量對資料庫的操作次數 以及海量數據造成程序效率的一個瓶頸
『叄』 java 如何並發更新資料庫同一條數據
分2分情況:
一.普通的單應用並發,使用關鍵字synchronized就可以實現。
二.多應用或多台並發,這時在由於2者並非同一應用,使用synchronized並不能滿足要求。此時,有下面幾種方案:
資料庫行級鎖,優點是簡單粗暴,缺點是容易死鎖,非資料庫專業人事建議不使用。
寫入請求分離成一個獨立項目,這就回到了第一種情況,優點是實現技術難度低,缺點是高並發性能相對不是很高。
使用分布式事務管理,這個是目前高並發處理的最優方案了。
最後要說的沒有差的方案,每個方案都有其適用環境,請根據自身需求選擇對應方案。
『肆』 java怎麼實現資料庫有新數據 頁面數據就更新
既然是有新數據,說明是兩種情況:
1、自己在資料庫內填寫的,那就脫離了資料庫的採集用戶信息的作用,無效性比較大,可以採用頁面時間畝粗圓間隔刷新的方式來每次獲取資料庫信息;
2.用戶傳進資料庫的凳森數據,既然是傳進來的 那就會發生資料庫和頁面交互,這樣迅塌的話當數據傳進資料庫的時候在Dao方法中返回一個資料庫select*from test(表)傳出來的值,頁面上request接收一下,不就能時時更新了嘛
『伍』 java多線程更新資料庫批量的數據信息嗎怎麼實現
//將資料庫中的數據冊扮條數分段
public void division(){
//獲取要導入的總的數據條數
String sql3="SELECT count(*) FROM [CMD].[dbo].[my1]";
try {
pss=cons.prepareStatement(sql3);
rss=pss.executeQuery();
while(rss.next()){
System.out.println("總記錄條數:"+rss.getInt(1));
sum=rss.getInt(1);
}
//每30000條記錄作為一個分毀纖割點
if(sum>=30000){
n=sum/30000;
resie=sum%30000;
}else{
resie=sum;
}
System.out.println(n+" "+resie);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
線程類
public MyThread(int start,int end) {
this.end=end;
this.start=start;
System.out.println("處理掉余數");
try {
System.out.println("--------"+Thread.currentThread().getName()+"------------");
Class.forName(SQLSERVERDRIVER);
System.out.println("加纖姿仿載sqlserver驅動...");
cons = DriverManager.getConnection(CONTENTS,UNS,UPS);
stas = cons.createStatement();
System.out.println("連接SQLServer資料庫成功!!");
System.out.println("載入mysql驅動.....");
Class.forName(MYSQLDRIVER);
con = DriverManager.getConnection(CONTENT,UN,UP);
sta = con.createStatement();
// 關閉事務自動提交
con.setAutoCommit(false);
System.out.println("連接mysql資料庫成功!!");
} catch (Exception e) {
e.printStackTrace();
}
// TODO Auto-generated constructor stub
}
public ArrayList<Member> getAll(){
Member member;
String sql1="select * from (select row_number() over (order by pmcode) as rowNum,*" +
" from [CMD].[dbo].[my1]) as t where rowNum between "+start+" and "+end;
try {
System.out.println("正在獲取數據...");
allmembers=new ArrayList();
rss=stas.executeQuery(sql1);
while(rss.next()){
member=new Member();
member.setAddress1(rss.getString("address1"));
member.setBnpoints(rss.getString("bnpoints"));
member.setDbno(rss.getString("dbno"));
member.setExpiry(rss.getString("expiry"));
member.setHispoints(rss.getString("hispoints"));
member.setKypoints(rss.getString("kypoints"));
member.setLevels(rss.getString("levels"));
member.setNames(rss.getString("names"));
member.setPmcode(rss.getString("pmcode"));
member.setRemark(rss.getString("remark"));
member.setSex(rss.getString("sex"));
member.setTelephone(rss.getString("telephone"));
member.setWxno(rss.getString("wxno"));
member.setPmdate(rss.getString("pmdate"));
allmembers.add(member);
// System.out.println(member.getNames());
}
System.out.println("成功獲取sqlserver資料庫數據!");
return allmembers;
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("獲取sqlserver資料庫數據發送異常!");
e.printStackTrace();
}
try {
rss.close();
stas.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public void inputAll(ArrayList<Member> allmembers){
System.out.println("開始向mysql中寫入");
String sql2="insert into test.my2 values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
try {
ps=con.prepareStatement(sql2);
System.out.println("-------------------------等待寫入數據條數: "+allmembers.size());
for(int i=0;i<allmembers.size();i++){
ps.setString(1, allmembers.get(i).getPmcode());
ps.setString(2, allmembers.get(i).getNames());
//System.out.println(allmembers.get(i).getNames());
ps.setString(3, allmembers.get(i).getSex());
ps.setString(4, allmembers.get(i).getTelephone());
ps.setString(5, allmembers.get(i).getAddress1());
ps.setString(6, allmembers.get(i).getPmdate());
ps.setString(7, allmembers.get(i).getExpiry());
ps.setString(8, allmembers.get(i).getLevels());
ps.setString(9, allmembers.get(i).getDbno());
ps.setString(10, allmembers.get(i).getHispoints());
ps.setString(11, allmembers.get(i).getBnpoints());
ps.setString(12, allmembers.get(i).getKypoints());
ps.setString(13, allmembers.get(i).getWxno());
ps.setString(14, allmembers.get(i).getRemark());
//插入命令列表
//ps.addBatch();
ps.executeUpdate();
}
//ps.executeBatch();
con.commit();
ps.close();
con.close();
this.flag=false;
System.out.println(Thread.currentThread().getName()+"--->OK");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("向mysql中更新數據時發生異常!");
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true&&flag){
this.inputAll(getAll());
}
}
『陸』 ,java中資料庫記錄集更新用什麼語句
分類裂核納: 電腦/網路 >> 程序設計 >> 其他氏扒編程語言
解析:
與具體的資料庫有關,但是基本上都支持SQL92標准.每個資料庫都有自己的一些處理的語句.
對於mysql用:UPDATE [database.]tableName SET [欄位操作列表如:age=age+1] [where 語句如:where age>0];
如果沒有where語句,update將會更新肆沒所有該表中的age欄位.
『柒』 java實現資料庫定時更新
才1500條記錄,怎麼弄也花不了很長時間,也不會占很大資源。
因為是兩個不同的資料庫所以用純SQL是做不了的。只有讀到伺服器中做比較然後更新。
這樣的操作最好不要用框架,自己寫也不是很難的,表2你只要讀一次然後循環發update到表1里去,表1的資料庫連接你創建一個就好了,你把它緩存了,在循環里不停的反復用(只用一個就行了不用寫連接池,因為不涉及多線程,--千萬不要發一條update建一個connection 然後關閉)整個過程大概不到一分中就完成(環境不一樣會有一點出入)
任何疑問
blog.csdn.net/shmilyhe
mail:[email protected]
『捌』 java更新資料庫的datatime欄位
可以嘗試以下代碼:
java.util.Date dt = new java.util.Date();
java.text.SimpleDateFormat sdf =
new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(dt);
然後把currentTime 插入數遲賣據庫的datetime欄位就可以兆伏了,取的碼猜逗時候也一樣,取出來的
『玖』 java 修改資料庫時數據無法更新
如帆薯橋樓上所講:
執行ps.executeUpdate();之後並不會自動態猛進行事務的手亂提交。
需要在之後添加執行
con.commit();
你執行下試一下吧