似的,main也是一個線程,第一個被執行,執行之後其空間被釋放,然後執行其他線程,因此必須在每個線程中連接資料庫
『貳』 如何用java單用戶多線程查詢資料庫
首先,你的確定數據的主鍵是否可以使用序列自增。 如果可以那麼你可以在插入專數據的時候獲取序列里屬的值,這樣數據就不會重復了。 其次,可以創建一個公共方法,進行數據的插入操作,並且方法類型聲明為 static synchronized 類型,這樣基本上就不...
『叄』 c#編程中,怎樣使用多線程處理資料庫讀取的信息
不用線程池也可以。你用循環啟動多個線程就可以了。
while(記錄不等於空)
{
創建一個新線程,參數是返回的一條記錄。
}
『肆』 delphi 如何用ADO進行多線程查詢資料庫
我剛做了一個在線程中使用ado的系統,實現方式如下:使用dm來存放
connection
,在各個線程中create
adoquery控制項,connection屬性設為dm中的connection,在使用完之後別忘了free。另外別忘了同步。好運!
『伍』 java線程中使用mysql連接查詢資料庫
不建議這樣做,一般不符合開發規范,如果這樣的話,你想想在業務量多的情況下內,多個線程如果不控制容,資料庫連接會將資料庫伺服器爆掉的,會影響業務的
常規做法:資料庫連接池(rid了解一下),據某些統計哈,真正用來做查詢的資源不超過整個查詢資料庫的生命周期的30%,大部分時間都用開創建連接關閉連接等操作,如果這個時候建立資料庫連接池的話,可以有效的將這部分時間釋放掉
『陸』 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()); } }