java线程中使用mysql连接查询数据库

java线程中使用mysql连接查询数据库,第1张

不建议这样做,一般不符合开发规范,如果这样的话,你想想在业务量多的情况下,多个线程如果不控制,数据连接会将数据库服务器爆掉的,会影响业务的

常规做法:数据库连接池(durid了解一下),据某些统计哈,真正用来做查询的资源不超过整个查询数据库的生命周期的30%,大部分时间都用开创建连接关闭连接等 *** 作,如果这个时候建立数据库连接池的话,可以有效的将这部分时间释放掉

//将数据库中的数据条数分段

 public void division(){

  //获取要导入的总的数据条数

  String sql3="SELECT  count(*)  FROM [CMD].[dbo].[mycopy1]"

  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

    residue=sum%30000

   }else{

    residue=sum

   }

   

   System.out.println(n+"  "+residue)

   

  } 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].[mycopy1]) 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.mycopy2 values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"

  try {

   ps=con.prepareStatement(sql2)

   System.out.println("-------------------------等待写入数据条数: "+allmembers.size())

   for(int i=0i<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连接MySQL数据库与其他的数据库连接核心是一样的,如果说区别,那就是所需的驱动不一样。

工具/原料

MySQL、JDK

方法/步骤

1、首先需要安装好JDK(配置环境变量),如图所示:

2、其次要安装好MySQL数据库,可以使用可视化Navicar For MySQL,如图所示:

3、最后通过代码进行连接。

(1)确定连接路径URL:

String url="jdbc:mysql://localhost(可以是本机IP地址):3306(端口号)/mysqltest(数据库名称)?"+"user=用户账号&password=用户密码&useUnicode=字符编码"

(2)加载驱动:

Class.forName("com.mysql.jdbc.Driver")

(3)连接,获取Connection对象

Connection conn=DriverManager.getConnection(url)

(4)可以通过conn对象检验连接与否。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9971377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存