最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

Java:IO流,增刪改查,配置文件,預(yù)處理后的DBUtils,含個人詳細(xì)總結(jié)【詩書畫唱】

2020-07-09 14:23 作者:詩書畫唱  | 我要投稿

創(chuàng)建數(shù)據(jù)庫表stu,結(jié)構(gòu)uid,uname,upwd,umoney,使用預(yù)處理和配置文件制作增刪改查程序


create table stu(



uid int primary key identity(1, 1),


uname nvarchar (20) ,


upwd nvarchar (20),



umoney int

)


insert into stu values('詩書','0',233)








insert into stu values('江唯','1',666)








insert into stu values('嘉怡','2',777)








insert into stu values('畫唱','3',888)








insert into stu values('點贊','4',999)








--select * from stu




--delete? from stu




--drop table stu



package liZi;

import java.io.*;

import java.util.*;

import java.sql.*;

public class peiZhi {

public static void main(String[] args)

throws Exception{


System.out.println("查表的所有信息:\n");

// selectSql:查詢的SQL語句

String selectAllSql="select * from stu";


ResultSet resNeiRong1=DBUtils.Select(selectAllSql);

selectTableAll(resNeiRong1);

System.out.println("——————————");



System.out.println("修改表的信息后查表的所有信息:\n");


String updateSql

="update stu set uname=? where uid=?";

Object[] o={"詩書畫唱",1};


// Object[] o={第一個"?",第二個"?",...第n個"?"};

DBUtils.ZSG(updateSql, o);

// ______________________________



ResultSet resNeiRong2=DBUtils.Select(selectAllSql);

selectTableAll(resNeiRong2);

System.out.println("——————————");


System.out.println("刪除表的信息后查表的所有信息:\n");


String deleteSql

="delete from stu where uid=?";

Object[] oo={2};


DBUtils.ZSG(deleteSql,oo);

// ______________________________

ResultSet resNeiRong3=DBUtils.Select(selectAllSql);

selectTableAll(resNeiRong3);

System.out.println("——————————");



System.out.println("增加表的信息后查表的所有信息:\n");


String insertSql

="insert into stu values(?,?,?)";

Object[] ooo={"點贊投幣收藏和關(guān)注",4,666};


DBUtils.ZSG(insertSql, ooo);

// ______________________________

ResultSet resNeiRong4=DBUtils.Select(selectAllSql);

selectTableAll(resNeiRong4);

System.out.println("——————————");


}



//當(dāng)有一段代碼會常用,那么就會用

// 鼠標(biāo)右鍵等的快捷鍵封裝生成的自定義方法。


//自己總結(jié)的自定義方法模板:private static void

//方法名(被傳值的類型 被傳值名){內(nèi)容}


// resNeiRong可獲得resNeiRong1或resNeiRong2等的內(nèi)容


// 下面是用快捷鍵封裝生成的自定義方法,

// selectTableAll:查詢表的所有信息。



private static void selectTableAll(ResultSet resNeiRong)?

throws SQLException {

while(resNeiRong.next()){

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

+resNeiRong.getObject(1)

+"\t用戶名:"

+resNeiRong.getObject(2));

}

}


}






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{//static為每個類中最先執(zhí)行的地方,因為要讓這部分先執(zhí)行,所以這部分外面套個static,順序不對,就會有問題

try {

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

InputStream is= DBUtils.class.getResourceAsStream("./database.properties");

Properties p=new Properties();

//字節(jié)流轉(zhuǎn)為內(nèi)容

p.load(is);

root=p.getProperty("root");

url=p.getProperty("url");

uname=p.getProperty("uname");

pwd=p.getProperty("pwd");

//加載驅(qū)動

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

//自己的總結(jié):

//public?static 方法的數(shù)據(jù)類型 方法名(XXX(被傳值的數(shù)據(jù)類型)... 被傳值名){}:表示聲明了一個公共,靜態(tài),有任意數(shù)量的被傳值的數(shù)據(jù)類型為XXX的被傳值的方法

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;

}

}


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

uname=qqq

pwd=123

root=com.microsoft.sqlserver.jdbc.SQLServerDriver



DBUtils中nain主函數(shù)中使用方法:


package Text;

import java.io.*;

import java.util.*;

import java.sql.*;

public class DBUtils {


// 必須先把sqljdbc包導(dǎo)入,不然會報錯

//下面的main主函數(shù)可以在這個DBUtils中直接調(diào)用

// DBUtilsprepareStatement

// 這個用了預(yù)處理的類,類里面有增刪改或查的方法

// 用“.”來調(diào)用,自己的總結(jié)

// :(類名).(這個類中有的方法名)

// 這個類可以分開寫到單獨的文件,也可以

// 寫在有main主函數(shù)調(diào)用的.java文件



public static void main(String[] args)?

throws Exception{

String printlnAllSql="select * from stu";

String updateSql

="update stu set uname=? where uid=?";

Object[] duiXiang={"詩書畫唱",1};

// 想對某個對象進(jìn)行操作的自己的總結(jié):

// 聲明一個Object[] 對象名={?的值,?的第某個位置數(shù)值};

// 之后用下面聲明的增刪改或查的方法,來執(zhí)行下面的方法的內(nèi)容


DBUtilsPrepareStatement.ZSGFangFa

(updateSql, duiXiang);



ResultSet res

=DBUtilsPrepareStatement

.selectFangFa(printlnAllSql);

System.out.println("打印所有stu表的內(nèi)容:\n");

while(res.next()){

System.out.println(

"用戶名:"+res.getObject(1)

+";用戶編號:"+res.getObject(2));

}


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

// System.out.println(duiXiang[i]);

// }

}

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

// public static void bianLiFangFa(Object... o){

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

// System.out.println(o[i]);

// }

// }

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

}

class DBUtilsPrepareStatement{

static String root,url,uname,pwd;

static Connection con=null;

static PreparedStatement ps=null;

static ResultSet res=null;

//常在靜態(tài)代碼塊中讀取配置文件

// static靜態(tài)代碼塊就是優(yōu)先執(zhí)行的部分

static{

InputStream is=

DBUtilsPrepareStatement

.class.getResourceAsStream("./db.properties");

Properties p=new Properties();

try {

p.load(is);

root=p.getProperty("root");

url=p.getProperty("url");

uname=p.getProperty("uname");

pwd=p.getProperty("pwd");

//用Class.forName加載驅(qū)動,

// root為驅(qū)動的根(root)目錄com.microsoft.sqlserver.jdbc.SQLServerDriver

Class.forName(root);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//個人理解:下面是加載數(shù)據(jù)庫鏈接的方法 ,lianJieUrlUnamePwd

// 連接url,uname,pwd

// 就是用.getConnection

// 把這里root對應(yīng)的

// com.microsoft.sqlserver.jdbc.SQLServerDriver

//

// 字符串,DriverManager和url,uname,pwd對應(yīng)的字符串拼接或聯(lián)系起來等

public static Connection lianJieUrlUnamePwd(){

if(con==null){

try {

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

} catch (SQLException e) {


e.printStackTrace();

}

}

return con;

}

//聲明用上prepareStatement預(yù)處理的封裝的查詢方法

public static ResultSet?

selectFangFa(String sql,Object... o)

{

con=lianJieUrlUnamePwd();//拿到數(shù)據(jù)庫鏈接

try {

ps=con.prepareStatement(sql);

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

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

}

//得到結(jié)果集

res=ps.executeQuery();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return res;

}

//封裝增刪改查的方法?

public static boolean?

ZSGFangFa(String sql,Object... o){

con=lianJieUrlUnamePwd();

boolean b=false;

try {

ps=con.prepareStatement(sql);

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

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

}

if(ps.executeUpdate()>0){

b=true;

}

// executeQuery():查詢的時候用? ResultSet?

// executeUpdate():增刪改的時候用? int >0成功

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return b;

}

}


root=com.microsoft.sqlserver.jdbc.SQLServerDriver

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

uname=qqq

pwd=123



I/O輸入/輸出(Input/Output),分為IO設(shè)備和IO接口兩個部分。





package peiZhi;

import java.io.*;

import java.util.*;

public class pz {

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

//? ? input 英[??np?t]

//? ? 美[??np?t]

//? ? v. 輸入(信息);

//? ? stream 英[stri?m]

//? ? 美[stri?m]

//? ? n.流; (液) 流; (氣) 流; (人) 流; (車) 流;

//? ? InputStream:輸入流

//? ? resource 英[r??s??s]

//? ? 美[?ri?s??rs]

//? ? n. 資源

//? ? getResourceAsStream:得到資源作為(As)流

//? ? 在Java中,能夠讀取一個字節(jié)序列的對象就稱作一個輸入流。

//? ? ————————————————

//? ? 下面的neiRong就是被聲明成輸入流。

//? ? 輸入流是一種輸入的格式,

//? ? 所謂的“流”,意味著是順序訪問形式

//? ? (也就是相對于隨機(jī)訪問形式來說的)。

//? ? 打開一個文件的時候,文件指針會按順序讀取里面的內(nèi)容

//? ? ,就好像水順次從水管中流出一樣,

//? ? 而這一個模型我們把它抽象為“輸入流”。

? ? InputStream neiRong=pz.class.

? ? getResourceAsStream("./pz.properties");

//? ? properties 英[?pr?p?tiz]

//? ? 美[?prɑp?rtiz]

//? ? n. 所有物; 特性;

? ?

//? ? Properties類表示一個持久的屬性集,

//? Properties可以保存在流中或從流中加載,

//? ? 屬性列表中每一個鍵及其對應(yīng)值都是一個字符串。


//? ? Properties集合是一個唯一和IO流相結(jié)合的集合

//

//? ? 1.可以使用Properties集合中的方法store,

//? ? 把集合中的臨時數(shù)據(jù),持久化寫入到硬盤中存儲

//

//? ? 2.可以使用Properties集合中的load,

//? ? 把硬盤中保存的文件(鍵值對),讀取到集合中使用

//

//? ? 屬性列表中每一個鍵及其對應(yīng)值都是一個字符串。

//

//? ? Properties集合是一個雙列集合,key和value默認(rèn)都是字符串


//property 英[?pr?p?ti]

//美[?prɑ?p?rti]

//n. 財產(chǎn);?


? ? //創(chuàng)建Properties集合對象,

//? ? 使用Properties集合存儲數(shù)據(jù),

//? ? 遍歷取出Properties集合中的數(shù)據(jù):

? ? Properties jiHe=new Properties();

? ? ? ? try{

//? ? ? ? load 英[l??d]

//? ? ? ? 美[lo?d]

//? ? ? ?

//? ? ? ? v. 【(把大量…) 裝上,裝入;?

//? ? ? ? 承載; 】裝載; 【大量給予(尤指得攜帶的東西);】

//

? ? ? ? jiHe.load(neiRong);

//? ? ? ? 把nerong裝載到j(luò)iHe里,之后可以直接打印出來

? ? ? ? System.out.println("打印所有內(nèi)容:"+jiHe);

//? ? ? ? 使用getProperty方法通過key獲取value

? ? ? ? System.out.println("打印name對應(yīng)的值:"

+jiHe.getProperty("name"));

//? ? ? ? "name"為Properties文件中的key鍵,

//? ? ? ? name=XXX中的XXX為對應(yīng)的value值

? ? ? ? }catch(IOException e){

? ? ? ? e.printStackTrace();

? ? ? ? ?}

? ? }


}





Java:IO流,增刪改查,配置文件,預(yù)處理后的DBUtils,含個人詳細(xì)總結(jié)【詩書畫唱】的評論 (共 條)

分享到微博請遵守國家法律
探索| 西青区| 富锦市| 恩施市| 同仁县| 抚远县| 象州县| 泸定县| 平果县| 黑水县| 南华县| 荃湾区| 黔南| 嘉峪关市| 裕民县| 合作市| 武威市| 都江堰市| 绥中县| 喀喇沁旗| 南开区| 黔南| 深水埗区| 宜章县| 济阳县| 辽宁省| 乳源| 岑巩县| 龙山县| 新干县| 和林格尔县| 兴山县| 鞍山市| 恭城| 桂平市| 崇明县| 阿合奇县| 山东省| 肇东市| 尼玛县| 兰西县|