前兩天在Java代碼中定義字符串夾雜變量寫SQL語句時,突然發現之前會用單雙引號而現在不會用了。今天再次分析終於懂了。
廢話不多說,直接舉例分析
一、SQL語句分析(建議sql語句粘貼出來看)
String sql = "select count(*) from user where name = '" + name + "' and password = '" + password + "'";
用圖分析,第一個SQL語句,第二個是Java語句中的樣子。其中sql語句中字符串xiaohong和123在Java語句sql變量中被斜體的name和password兩個變量替代了。
二、在Java變量中如何無誤速寫sql語句
Java寫sql語句有這麼多引號要區分和注意,那我們應該怎麼快速寫出來呢?
- 先用兩個雙引號包含自己的所有的sql語句,然後在引號內開始寫sql語句
String sql = "select ...";
- 當遇到要寫變量時,先寫兩個單引號(’),再在單引號內嵌套兩個雙引號("),再在雙引號內嵌套兩個加號(+),最後在加號中間嵌套你的變量
String sql = "select count(*) from user where name = '" + name + "' ";
- 再在字符串變量最後一個雙引號前面繼續寫你的sql語句
String sql = "select count(*) from user where name = '" + name + "' and password = ";
- 還有變量的話模仿之前遇到變量的樣子,在最後一個雙引號前面寫兩個單引號嵌套兩個雙引號再嵌套兩個加號再嵌套變量,就OK了。
String sql = "select count(*) from user where name = '" + name + "' and password = '" + password + "'";
三、在Java變量寫SQL語句最優解
當然是使用Preparement類,這樣sql語句就可以寫成這樣了
String sql = "select * from user where name =? and password =?";
用?代替變量,然後調用Connection類對象的prepareStatement方法預編譯sql語句。再用Preparement對象的set方法添加變量值,再進行excute方法進行執行sql語句。不僅可以避免sql語句可能出錯,更可以避免SQL注入的問題。
文章最後,如果有什麼疑問或者問題歡迎留言。