MySQL學(xué)習(xí)筆記:儲(chǔ)存過程,MySQL和Java等的JDBC連接,防注入,配置文件【詩(shī)書畫唱】
存儲(chǔ)過程:
存儲(chǔ)了多條sql語(yǔ)句的過程
存儲(chǔ)過程的特點(diǎn):
1.可以完成比較復(fù)雜的運(yùn)算
2.SQL編程的代碼可重復(fù)使用
3.執(zhí)行的速度相對(duì)快一些(每次寫的sql語(yǔ)句數(shù)據(jù)庫(kù)會(huì)將其編譯成函數(shù),
按照存儲(chǔ)過程的參數(shù)分類:
in:可以將參數(shù)帶入到存儲(chǔ)過程中去使用。
out:可以將參數(shù)當(dāng)做返回值來(lái)進(jìn)行返回內(nèi)容。
存儲(chǔ)過程數(shù)據(jù)庫(kù)只會(huì)編譯一次之后下次用的時(shí)候就不會(huì)再編譯了)?
語(yǔ)法:
create procedure 存儲(chǔ)過程名字(先寫參數(shù),后寫類型)
begin
做存儲(chǔ)過程的sql語(yǔ)句
if(條件表達(dá)式)then
內(nèi)容1
else
內(nèi)容2
end if
end;
存儲(chǔ)過程While語(yǔ)法:
while(條件表達(dá)式) do
循環(huán)的內(nèi)容
end while;
存儲(chǔ)過程Switch語(yǔ)法:
case num
when? 3 then
sql語(yǔ)句
when 4 then
sql語(yǔ)句
else
其他sql語(yǔ)句
end case;
執(zhí)行存儲(chǔ)過程語(yǔ)句的對(duì)象
CallableStatement cs=con.prepareCall("{call select_stu()}");
// 1.導(dǎo)包
// 2.加載驅(qū)動(dòng)(類加載器)使用某個(gè)文件
Class.forName("com.mysql.jdbc.Driver");
// 3.獲取數(shù)據(jù)庫(kù)鏈接(創(chuàng)建連接數(shù)據(jù)庫(kù)的對(duì)象)
String?url="jdbc:mysql://localhost:3306/chufaqi";
Connection?con=DriverManager.getConnection(url,"root","root");
// 4.執(zhí)行sql語(yǔ)句的對(duì)象
PreparedStatement?ps=con.prepareStatement("select?*?from?stu1");
// 5.聲明一個(gè)接收結(jié)果集的對(duì)象
ResultSet?res=ps.executeQuery();
// 6.遍歷結(jié)果集對(duì)象
while(res.next()){
System.out.println(res.getObject(1)+"\t"+res.getObject(2)+"\t"+res.getObject(3)+"\t"+res.getObject(4));
}