JDBC part2 DML以及預編譯

2022-03-28 09:11:48 字數 2590 閱讀 3257

前幾步和day01一致

//3.寫sql語句

string sql = "insert into copy_emp(last_name) values("+"'洛哥哥')";

//4.建立傳送物件

statement stmt = conn.createstatement();

stmt.executeupdate(sql);

//7.關閉資源

sql注入就是使用者輸入的值,當做了sql語言的一部分,然後攻破密碼等重要資訊.

為了防止sql注入,就要將含有單引號的採用預編譯處理.

比如 :

string username = "admin";

string password = "123 or '1' = '1";(sql注入,使破解後的密碼恆成立)

列印輸入密碼之後的sql語言

select count(*) from login where username= 'admin' and password= '123' or '1'='1';

普通編譯:
//4.建立傳送物件

statement stmt = conn.createstatement();

//5.傳送sql語句

resultset rs = stmt.executequery(sql);

預編譯
//4.建立預編譯物件

preparedstatement pstmt = conn.preparestatement(sql);

//5.填入資料

pstmt.setstring(1, myusername);

pstmt.setstring(2, mypassword);

//6.建立結果集

resultset rs = pstmt.executequery();

前兩步與day01一致,檢視使用者輸入的使用者名稱和密碼是否是已經存在資料庫的

string myusername = "admin";

string mypassword = "admin";

//3.寫sql語句(判斷輸入的使用者名稱密碼在資料庫中有幾條記錄)

string sql = "select count(*) count from login1 where username = ? and password = ?";

//4.建立預編譯物件

preparedstatement pstmt = conn.preparestatement(sql);

//5.填入資料

pstmt.setstring(1, myusername);

pstmt.setstring(2, mypassword);

//6.建立結果集

resultset rs = pstmt.executequery();

//7.查詢select結果

if(rs.next()) else

} //8.關閉資源

public class dbutil  catch (classnotfoundexception e)  catch (exception e) 

return conn; }

/*** 查詢語句關閉

* @param rs 結果集

* @param stmt 傳送物件

* @param conn 連線物件

*/public static void close(resultset rs,statement stmt,connection conn) catch (sqlexception e)

} if(stmt != null) catch (sqlexception e)

} if(conn != null) catch (sqlexception e)

} }/**

* 非查詢語句關閉資源

* @param stmt 傳送物件

* @param conn 連線物件

*/public static void close(statement stmt,connection conn)

/*** 查詢語句

* @param sql

* @return resultset

*/public static resultset selectsql(string sql) catch (sqlexception e)

return rs; }

/*** 增刪改的sql語句

* @param sql

* @return

*/public static int runsql(string sql) catch (sqlexception e)

return result;

}

作業2 DML設計

1 作業目的 熟悉常用dml的設計。作業內容 1 編寫sql,實現以下功能 1 將課程編號為0003的小於60分的成績均改為60分。update sc set grade 60 where grade 60 and course id 0003 2 刪除不及格的選課資訊。delete from sc...

Oracle鎖2 DML操作和鎖

oracle為dml操作自動獲取行鎖和表鎖,操作的型別決定了鎖的行為,下面對dml操作鎖的情況作了乙個彙總 sql statement row locks table lock mode rs rx s srx x select from table.noneyy yyyinsert into ta...

mysql常用語句之DML語句2

表連線 內連線 select 列1,列2 from 表1,表2where 表1.列1 表2.列1 左鏈結select 列1,列2 from 表1 left join 表2 on 表1.列1 表2.列1 右鏈結select 列1,列2 from 表1 right join 表2 on 表1.列1 表2...