java语句怎样更新sql数据库,

java语句怎样更新sql数据库,,第1张

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点  。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。

(1)用  preparedstatement  ,你用preparedstatement 作为关键字,上网找找。资料一堆一堆的。

(2)String str=””

String sql = "Update a set b=?where sno=’0’"

preparedstatement ps = connection.preparestatement(sql)

ps.setint(1,str)

resultset rs = ps.executequery()

总结: Jdbc中的statement对象用于向数据发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。

Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)。

Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。

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

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())

}

}

public void update(String sql,String[] args)

{

try

{

con=getCon()//这里应该在本类有一个getCon()的方法吧,用来拿到数据库链接的

pstat=con.prepareStatement(sql)//创建一个prepareStatement,用来执行sql语句的,pstat在成员变量里有定义吧

for(int i=0i<args.lengthi++)//这里遍历传进来的args数组

{

pstat.setString(i+1, args[i])//这里是执行了sql语句的,把sql语句里的"?" 填充,比如那条sql的第一个问号用args[0]代替;

}

pstat.executeUpdate()//执行更新

}catch(Exception e){e.printStackTrace()}

}

这段代码的总体意思是传入一条sql语句,和需要更新的内容(在args数组里面)..


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存