20165318 2017-2018-2 《Java程序設計》第七週學習總結

20165318 2017-2018-2 《Java程序設計》第七週學習總結

目錄

學習過程遇到的問題及總結

  • 問題1:初始化數據庫時出現如下問題:

  • 解決方法1:因爲我電腦以前裝過MySQL,初始化過數據庫,所以不能再次初始化,不用管這個錯誤,繼續進行下面的步驟就好了。java

  • 問題2:因爲我電腦以前裝過MySQL,因此就下載了Navicat來運行MySQL,可是鏈接原有的數據庫時,出現如下問題:mysql

  • 解決方法2:參考MYSQL錯誤代碼#1045 Access denied for user 'root'@'localhost'
    解決步驟以下:
    一、中止MYSQL服務,CMD打開DOS窗口,輸入 "net stop mysql ";不過有時候不中止也是無所謂;
    二、在CMD命令行窗口,進入MYSQL安裝目錄 好比「F:\mysql-5.7.21-winx64\bin」
    三、在第二點的命令窗口輸入命令爲:"mysqld-nt --skip-grant-tables",做用是,進入mysql安全模式,即當mysql起來後,不用輸入密碼就能進入數據庫。
    四、這時候能夠進入數據庫後,給本身的數據庫從新設置密碼就能夠了!git

  • 問題3:下過MySQL以後,我又安裝了XAMPP,可是一直不能使用,最初是出現如下問題:
12:19:13 PM [mysql] Error: MySQL shutdown unexpectedly.
    12:19:13 PM [mysql] This may be due to a blocked port, missing dependencies,
    12:19:13 PM [mysql] improper privileges, a crash, or a shutdown by another method
    12:19:13 PM [mysql] Press the Logs button to view error logs and check
    12:19:13 PM [mysql] the Windows Event Viewer for more clues
    12:19:13 PM [mysql] If you need more help, copy and post this
    12:19:13 PM [mysql] entire log window on the forums
  • 解決方法3:參考XAMPP運行MySQL entire log window on the forums解決方案中的全部方法,最後得以解決,必需要先運行Apache,在運行MySQL就好了。正則表達式

  • 問題4:上面的問題解決之後,點擊admit出現ERROR,再次開啓MySQL,就出現如下問題:sql

  • 屢次查找以後,暫時仍是沒有解決方法,可是個人Navicat能夠正常運行,因此仍是能後完成本週的代碼測試任務。

返回目錄數據庫

教材學習內容總結

第11章 JDBC與MySQL數據庫

11.1 MySQL數據庫管理系統

MySQL數據庫管理系統,簡稱MySQL,是世界上最流行的開源數據庫管理系統,其社區版(MySQL Community Edition)是最流行的免費下載的開源數據庫管理系統。數組

下載安裝後,進行啓動MySQL數據庫服務器,並創建鏈接,創建數據庫,建立表等操做。安全

11.2 鏈接MySQL數據庫

1.下載JDBC-MySQL數據庫驅動服務器

2.加載JDBC-MySQL數據庫驅動
代碼以下:app

try{ 
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){}

11.3 鏈接數據庫

使用Connection getConnection(java.lang.String)方法創建鏈接的代碼以下:

Connection con; String uri = "jdbc:mysql://192.168.100.1:3306/students?user=r oot&password=&useSSL=true"; 
try{ con = DriverManager.getConnection(uri); //鏈接代碼 } catch(SQLException e){ System.out.println(e); }

使用
Connection getConnection(java.lang.String, java.lang.String, java.lang.String)方法創建鏈接的代碼以下:

Connection con;
String uri = "jdbc:mysql:// 192.168.100.1:3306/students? useSSL=true";
String user ="root";
String password ="";
try{  
      con = DriverManager.getConnection(uri,user,password); //鏈接代碼
   }
catch(SQLException e){
      System.out.println(e);
}

11.4 查詢操做

具體步驟:

1.向數據庫發送SQL查詢語句

try{  Statement sql=con.createStatement();
}
catch(SQLException e ){}

2.處理查詢結果


不管字段是何種屬性,總可使用
getString(int columnIndex)或 getString(String columnName)
方法返回字段值的串表示。

3.關閉鏈接

順序查詢:

指ResultSet對象一次只能看到一個數據行,使用next()方法移到下一個數據行,next()方法最初的查詢位置,即遊標位置,位於第一行的前面。next()方法向下(向後、數據行號大的方向)移動遊標,移動成功返回true,不然返回false。

控制遊標:

爲了獲得一個可滾動的結果集,需使用下述方法得到一個Statement對象。

Statement stmt = con.createStatement(int type ,int concurrency);
條件與排序查詢:

(1)where子語句
通常格式:

select 字段 from 表名 where 條件

(2)排序
用order by子語句對記錄排序

11.5 更新、添加與刪除操做

1.更新

update 表 set 字段 = 新值 where <條件子句>

2.添加

insert into 表(字段列表) values (對應的具體的記錄)

insert into 表 values (對應的具體的記錄)

3.刪除

delete from 表名 where <條件子句>

11.6 使用預處理語句

Connection和某個數據庫創建了鏈接對象con,那麼con就能夠調用prepareStatement(String sql)方法對參數sql指定的SQL語句進行預編譯處理,生成該數據庫底層的內部命令,並將該命令封裝在PreparedStatement對象中,那麼該對象調用下列方法均可以使得該底層內部命令被數據庫執行。

11.7 事務

JDBC事務處理步驟

1.用setAutoCommit(booean b)方法關閉自動提交模式
2.用commit()方法處理事務
3.用rollback()方法處理事務失敗

返回目錄

錯題總結

第五週錯題總結

  • 錯題1:
若是超出JVM運行能力以外,如「byte[] arr=new byte[1024*1024*600];」會拋出java.lang.OutOfMemoryError異常。 
A .true
B .false

正確答案:B
  • 解析1:對於嚴重的錯誤,經過Error類來描述,而對於非嚴重的問題,則是經過Exception類來進行描述的,本題不是嚴重的錯誤,應該經過Exception類來描述。

  • 錯題2:
下列關於public int read(byte[] b, int off, int len)方法的敘述,正確的是 
A .此方法覆蓋了InputStream類中的read方法。
B .此方法從該輸入流中將最多len個字節的數據讀入一個byte數組中。
C .此方法返回讀入緩衝區的字節總數,若是由於已經到達文件末尾而沒有更多的數據,則返回-1。
D .若是b爲null,則會拋出IndexOutOfBoundsException異常。

正確答案:A B C
  • 解析2:D項異常拋出錯誤,應該拋出NullPointerException異常。

  • 錯題3:
下列選項中,能夠經過編譯的是
InputStream is = new BufferedInputStream(new FileInputStream("zoo.txt"));
   InputStream wrapper = new _____; 
A .BufferedInputStream
B .FileInputStream
C .BufferedWriter
D .ObjectInputStream
E .ObjectOutputStream
F .BufferedReader

正確答案:A D
  • 解析3:因爲BufferedInputStreamObjectInputStream都是InputStream的子類,所以可使用InputStream wrapper = new _____;語句,wrapper爲上轉型對象。

  • 錯題4:
What is the result of executing the following code? 
String line;
Console c = System.console();
Writer w = c.writer();
if ((line = c.readLine()) != null)
   w.append(line);
w.flush(); 
A .The code runs without error but prints nothing.
B .The code prints what was entered by the user.
C .An ArrayIndexOutOfBoundsException might be thrown.
D .A NullPointerException might be thrown.
E .An IOException might be thrown.
F .The code does not compile.

正確答案:B D E
  • 解析4:This is correct code for reading a line from the console and writing it back out to the console, making option B correct.
    Options D and E are also correct. If no console is available, a NullPointerException is thrown. The append() method throws anIOException.

第六週錯題總結

  • 錯題1:
已知list是一個合法的集合引用,getCollection()返回一個合法集合的引用,下列合法的是? 
A .for(Object o  :  list)
B .for(Object o  :  getCollection())
C .for(Object o  :  list.iterator())
D .for(lterator i ;  list.iterator()  ;  i.hasNext()  )
E .for(lterator i=list.iterator(); i.hasNext();  )

正確答案:B E
  • 解析1:for(Object o : )該語句是依次輸出數組中的元素,list不是數組,A項錯誤。list.iterator是單個引用,C項錯誤。D項中,i沒有賦初值,錯誤。

  • 錯題2:
下列關於泛型類的子類的說法,正確的個數爲
①LinkedList<E>泛型類建立一個鏈表結構的對象。
②Stack<E>泛型類建立一個堆棧對象。
③HashMap<E>泛型類建立散列映射。
④DelayQueue<E>泛型類建立一個無界阻塞隊列。
⑤TreeSet<E>泛型類建立樹映射。
⑥Vector<E>建立可增加的對象數組。 
A .6
B .5
C .4
D .3

正確答案:B
  • 解析2:⑤TreeSet 泛型類建立樹集。因爲對HashMap 不瞭解,誤認爲只有HashMap<K,V>泛型類建立散列映像而HashMap 不是。

  • 錯題3:
下列關於正則表達式的說法,正確的是 
A .\ba\w*\b匹配以字母a開頭的單詞
B .\d+匹配1個或更多連續的數字。
C .\b\w{6}\b 匹配6個及以上字符的單詞。
D .[0-9]表明的含意與\d就是徹底一致的:一位數字
E .\S+匹配不包含空白符的字符串。
F .(\d{1,3}\.){3}\d{1,3}用來匹配 IP地址。

正確答案:A B D E
  • 解析3:C項:\b\w{6}\b 匹配恰好6個字符的單詞。
    F項: IP地址中每一個數字都不能大於255,該表達式忽略了這個約束條件。正確的是((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。
    我沒有選B項,由於我誤覺得\d+也能夠匹配1個或更多不連續的數字。

  • 錯題4:
下列說法正確的是 
A .Java 8以前,對日期進行運算,使用DateFormat類。
B .須要人類能理解的時間,建議使用Date類的toString()。
C .如今國際上通用的標準時間是GMT。
D .new Date(System.currentTimeMillis())等價於new Date()

正確答案:D
  • 解析4:經過查詢API,由Data的構造方法可知,Date(System.currentTimeMillis())等價於new Date(),D項正確。

  • 錯題5:
下列哪一個表達式是正確的(無編譯錯誤)? 
A .int m =Float.parseFloat("567");
B .int m =Short.parseShort("567")
C .byte m =Integer.parseInt("2");
D .float m =Float.parseDouble("2.9")

正確答案:C
  • 解析5:A項:float型比int型精度高,應使用類型轉換,轉換爲int;B項:567超出short型變量的範圍;D項:同A項,double型比float型精度高,應使用類型轉換,轉換爲float。

  • 錯題6:
對於以下代碼,下列哪一個敘述是正確的?
public class E {
  public static void main (String args[]) {
    String s1 = args[1];
    String s2 = args[2];
    String s3 = args[3];
    System.out.println(s3); 
  }
} 
A .程序出現編譯錯誤。
B .無編譯錯誤,在命令行執行程序:「java E I love this game」,程序輸出this。
C .無編譯錯誤,在命令行執行程序:「java E let us go」,程序無運行異常。
D .無編譯錯誤,在命令行執行程序:「java E 0 1 2 3 4 5 6 7 8 9」程序輸出3。

正確答案:D
  • 解析6:沒有看清題目,沒有在命令行中執行,而是將java E也做爲輸入,結果輸出錯誤。

返回目錄

代碼託管

碼雲連接:

代碼統計

返回目錄

參考連接

MYSQL錯誤代碼#1045 Access denied for user 'root'@'localhost'

XAMPP運行MySQL entire log window on the forums解決方案

相關文章
相關標籤/搜索