使用多行sql字符串时,要注意不要忽略了空格
生活随笔
收集整理的這篇文章主要介紹了
使用多行sql字符串时,要注意不要忽略了空格
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用李剛老師編著的《瘋狂Java講義》(第2版)學習MySql數據庫與JDBC編程(使用Java 7 ),其中第601頁的ConnMySql.java 程序代碼在Eclipse上運行,出現錯誤。
import java.sql.*; public class ConnMySql{public static void main(String[] args)throws Exception{Class.forName("com.mysql.jdbc.Driver");try(Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/select_test","root","0754");Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery( "select s.* ,teacher_name"+ "from student_table s, teacher_table t" + "where t.teacher_id = s.java_teacher"))//這里出錯 {while(rs.next()){System.out.println(rs.getInt(1) + "\t"+ rs.getString(2) + "\t"+ rs.getString(3) + "\t"+ rs.getString(4) );}}}}根據提示把Sql語句從原來的使用雙引號將多行語句連接起來改為一行語句,編譯通過。
import java.sql.*; public class ConnMySql{public static void main(String[] args)throws Exception{Class.forName("com.mysql.jdbc.Driver");/** 采用了自動關閉資源的try語句來關閉各種數據庫資源,,Java7改寫了Connection、Statement、ResultSet等接口,* 它們都繼承了AutoCloseable接口,因此它們都可以用try語句來關閉。* * */try(Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/select_test","root","0754");Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("select s.* ,teacher_name from student_table s, teacher_table t where t.teacher_id = s.java_teacher" ))//這樣改就沒問題/** "select s.* ,teacher_name"+ "from student_table s, teacher_table t" + "where t.teacher_id = s.java_teacher"* */{while(rs.next()){System.out.println(rs.getInt(1) + "\t"+ rs.getString(2) + "\t"+ rs.getString(3) + "\t"+ rs.getString(4) );}}}}仔細查看代碼后發現,每一句跟下一句句首都沒有留空格,相當于
select s.* ,teacher_namefrom student_table s, teacher_table t"所以導致出錯。
但是嘗試先在ResultSet語句上邊定義String類型變量s,會提示“The resource type String does not implement java.lang.AutoCloseable”。在try語句前定義就沒問題。
?
轉載于:https://www.cnblogs.com/JLeight/archive/2013/02/15/2912785.html
總結
以上是生活随笔為你收集整理的使用多行sql字符串时,要注意不要忽略了空格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android mvparms 踩坑
- 下一篇: java爬虫-简单爬取网页图片