无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java用commit的原因,事務,配置文件,預處理DBUtils商品和用戶交易金額【詩書畫唱】

2020-07-10 00:40 作者:詩書畫唱  | 我要投稿

用commit的原因,和要用commit時的情況:

//當用了con1.setAutoCommit(false);

// 這個事務后,結尾要用上commit表示全部執(zhí)行完后批量提交,

// 不加的話,SQL語句會執(zhí)行,但不會改數(shù)據(jù)庫的內容,

// 用了setAutoCommit(false);,結尾就要用commit();,

// 這兩個是成對的。

// 不加【事務setAutoCommit(false);】時,就沒必要加commit。







商品和用戶交易金額的程序:



create table shangDian(


shangDianId int primary key identity(1, 1),


--shangDianMoney:商店原來就有的本錢

shangDianName? nvarchar (20) ,

shangDianMoney int

)



create table yongHu(

-- yongHuMoney:用戶原來就有的本錢

?yongHuId int primary key identity(1, 1),

?yongName? nvarchar (20) ,


?yongHuMoney int

)

insert into shangDian values('詩書畫唱商店',520)



insert into shangDian values('詩書江唯商店',1314)


insert into yongHu values('嘉怡',777)



insert into yongHu values('畫唱',888)

--drop table shangDian

--drop table yonghu

--select* from? shangDian

--select* from? yonghu


package liZi;

import java.io.InputStream;

import java.sql.*;

import java.util.Properties;

public class DBUtils {

public static Connection con=null;

public static ResultSet res=null;

public static PreparedStatement ps=null;

public static String uname,pwd,root,url;

static{//類最先執(zhí)行的地方

try {

//將創(chuàng)建的配置文件轉化為字節(jié)流信息(類加載器讀)

InputStream is=

DBUtils.class.getResourceAsStream("./database.properties");

Properties p=new Properties();

//字節(jié)流轉為內容

p.load(is);

root=p.getProperty("root");

url=p.getProperty("url");

uname=p.getProperty("uname");

pwd=p.getProperty("pwd");

//1加載驅動

Class.forName(root);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static Connection getCon(){

if(con==null){

try {

con=DriverManager.getConnection(url,uname,pwd);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return con;

}

public static ResultSet Select(String sql,Object... o){

con=getCon();

try {

ps=con.prepareStatement(sql);

for(int i=0;i<o.length;i++){

ps.setObject(i+1,o[i]);

}

res=ps.executeQuery();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return res;

}

public static boolean ZSG(String sql,Object... o){

con=getCon();

boolean b=false;

try {

ps=con.prepareStatement(sql);

for(int i=0;i<o.length;i++){

ps.setObject(i+1,o[i]);

}

int num=ps.executeUpdate();

if(num>0){

b=true;

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return b;

}

}


package liZi;

import java.sql.ResultSet;

import java.util.*;

import java.io.*;

public class shopping{

public static void main(String[] args) throws Exception{

//

System.out . println("請執(zhí)行商品購買操作,親!\n");

System . out . println("用戶編號為1的你請輸入你花費的金額");

Scanner s=new Scanner(System.in);

int huafei=s. nextInt();

//用戶減少金額

String sql="update yongHu set yongHuMoney-=?"

+ " where yongHuId=1";

//商店增加金額

String sql1="update shangDian set shangDianMoney+"

+ "=? where shangDianId=1";

DBUtils. ZSG(sql,huafei);//執(zhí)行購買的減少金額

DBUtils. ZSG(sql1,huafei);//執(zhí)行購買的減少金額

ResultSet res1=DBUtils.Select("select * from yongHu");

ResultSet res2=DBUtils.Select("select * from shangDian");

if(res1.next()){

System. out. println("用戶編號:"

+res1. getObject(1)+"\t 用戶名:"

+res1. getObject(2)+" \t用戶還擁有的錢:"

+res1. getObject(3)+"元");

}

if(res2.next()){

System. out. println("商店編號: "+res2. getObject(1)

+"\t商店名: "+res2. getObject(2)

+" \t商店還擁有的錢:"+res2. getObject(3)+"元");}



}


}


url=jdbc:sqlserver://localhost;databaseName=yonghu

uname=qqq

pwd=123

root=com.microsoft.sqlserver.jdbc.SQLServerDriver




————————————————————————





package liZi;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;


public class shiWu {

public static void main(String[] args) throws Exception{

Class.forName("com.microsoft.sqlserver."

+ "jdbc.SQLServerDriver");

Connection con = DriverManager.getConnection(

"jdbc:sqlserver://localhost;databaseName=yonghu", "qqq",

"123");

//————————————

//手動提交事務:

con. setAutoCommit(false);

//————————

// 就是加了con. setAutoCommit(false);

// 這句代碼后,且ps1. executeUpdate();

//和ps2. executeUpdate() ;之間加入了

// System. out. println(10/0);

//這類會報錯的句子時,

//ps1. executeUpdate();

//和ps2. executeUpdate() ;都不會執(zhí)行。

// 之間不加入了System. out. println(10/0);

// 這類會報錯的句子時,

// ps1. executeUpdate();

// 和ps2. executeUpdate() ;都會執(zhí)行。

//如果不加con.setAutoCommit(false);

//這句代碼,那么

//ps1. executeUpdate();

//和ps2. executeUpdate() ;之間加入了

// System. out. println(10/0);

//這類會報錯的句子時,

//就只會執(zhí)行ps1. executeUpdate();。

//這樣就沒有“一致性”(就是執(zhí)行前和執(zhí)行后,

//用戶有的有的金額和商店有的金額和想等)

String updateSql1="update yongHu set yongHuMoney-=?"

+ " where yongHuId=?";

PreparedStatement ps1=con. prepareStatement(updateSql1);

String updateSql2="update shangDian set "

+ "shangDianMoney+=? where shangDianId=?";

PreparedStatement ps2=con.prepareStatement(updateSql2);


ps1. setObject(1, 20);ps1.setObject(2,1);

ps2. setObject(1, 20) ;ps2.setObject(2,1);

ps1. executeUpdate();

System . out . println("用戶信息修改了");

// System. out. println(10/0);

ps2. executeUpdate() ;

System . out . println("商店信息修改了");

String selectSql1="select * from yongHu";

String selectSql2="select * from shangDian";


PreparedStatement ps3=con.prepareStatement(selectSql1);

PreparedStatement ps4=con.prepareStatement(selectSql2);

ResultSet res1=ps3. executeQuery();

ResultSet res2=ps4.executeQuery();

if(res1. next()){

System.out.println(res1. getObject(1)+" "

+res1. getObject(2)+" "+res1. getObject(3));

}

if(res2.next()){

System.out.println(res2. getObject(1)+" "

+res2. getObject(2)+" "+res2. getObject(3));

}


//————————————————————

// ps1. executeUpdate();

//// XXX. executeUpdate();表示又執(zhí)行了一次對應的SQL語句

// System. out . println("用戶信息提交了");

// System. out . println(10/0);

// ps2. executeUpdate();

// System. out . println("商店信息提交了");

// ————————————————

con.commit();

}

}


自己總結的語法:

//XXX. setObject(第X個“?”, “?”的值);



時:


757沒變:

540沒變:




757減20變?yōu)?37:

但540不變


兩條數(shù)據(jù)不同時變和兩條數(shù)據(jù)的和變了。



Java用commit的原因,事務,配置文件,預處理DBUtils商品和用戶交易金額【詩書畫唱】的評論 (共 條)

分享到微博請遵守國家法律
聂拉木县| 达州市| 财经| 湖州市| 陆河县| 宜都市| 贺兰县| 嘉峪关市| 都兰县| 定边县| 思茅市| 平果县| 邵东县| 开化县| 瓦房店市| 花莲市| 凤翔县| 资兴市| 松滋市| 太和县| 定州市| 黄陵县| 禹城市| 和顺县| 凤冈县| 阜南县| 长葛市| 砀山县| 平度市| 贡山| 义马市| 南涧| 赤城县| 双牌县| 井陉县| 广丰县| 台中县| 贺州市| 富蕴县| 克什克腾旗| 彝良县|