亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    Java程序開發(fā)學(xué)習(xí)之JDBC與MySQL數(shù)據(jù)庫

    Java程序開發(fā)學(xué)習(xí)之JDBC與MySQL數(shù)據(jù)庫

    相關(guān)學(xué)習(xí)推薦:java基礎(chǔ)

    一、JDBC連接數(shù)據(jù)庫的操作

    編寫時可以封裝在一個類里面簡化代碼。
    (1)加載JDBC-MySQL數(shù)據(jù)庫驅(qū)動

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

    (2)連接數(shù)據(jù)庫

    Connection con = null;//聲明要連接數(shù)據(jù)庫的對象comString uri = "jdbc:mysql://localhost:3306/數(shù)據(jù)庫名?useSSL=true &characterEncoding=utf-8";	//連接地址String user = "root";	//連接數(shù)據(jù)庫的用戶名String password = "123456";	//連接數(shù)據(jù)庫的密碼try {     con = DriverManager.getConnection(uri,user,password); 	//連接代碼}catch(SQLException e){ }

    (3)編寫操作數(shù)據(jù)庫中數(shù)據(jù)的代碼

    二、查詢操作

    1,查詢操作的具體步驟
    (1)向數(shù)據(jù)庫發(fā)送SQL語句:

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

    首先聲明SQL語句對象,然后讓已創(chuàng)建的連接對象con調(diào)用方法createStatement()創(chuàng)建這個SQL語句對象。
    (2)處理查詢結(jié)果
    有了SQL語句對象后,這個對象可以調(diào)用相應(yīng)的方法實現(xiàn)對數(shù)據(jù)庫中表的各項操作,其中查詢結(jié)果存放在一個ResultSet類聲明的對象中。即SQL查詢語句對數(shù)據(jù)庫的查詢操作講放回一個ResultSet對象,ResultSet由“列”(字段)組織的數(shù)據(jù)行構(gòu)成。

    rs = sql.executeQuery("select * from 表的名稱");//讀取表中的所有列,*為通配符rs = sql.executeQuery("select 行1字段名,行2字段名... from 表的名稱");//讀取表中特定的列

    ResultSet對象一次只能看到一行數(shù)據(jù),使用next()方法移到下一行。ResultSet對象可以通過getXxx(int columnIndex)獲得列值和通過傳遞列名getXxx(String columnName)獲得列值。
    (3)關(guān)閉連接

    con.close(); //關(guān)閉con所連接的數(shù)據(jù)庫

    注意:數(shù)據(jù)庫與連接對象緊密綁定,應(yīng)在使用完數(shù)據(jù)庫再進行關(guān)閉操作。

    2,控制游標(biāo)
    結(jié)果集的游標(biāo)的初始位置在結(jié)果集第一行的前面,結(jié)果集調(diào)用next()方法向下(后)移動游標(biāo),移動成功返回true,移動失敗返回false。如果要在結(jié)果集中移動并顯示若干條記錄,必須返回一個滾動的結(jié)果集。方法如下:

    Statement stmt = con.createStatement(int type,int concurrency);//獲得一個Statement對象,根據(jù)參數(shù)的值,stmt返回相應(yīng)類型的結(jié)果集:ResultSet re = stmt.executeQuery(SQL語句);type的取值:決定滾動方式: ResultSet.TYPE_FORWARD_ONLY 結(jié)果集的游標(biāo)只能向下滾動 ResultSet.TYPE_SCROLL_INSENSITIVE 游標(biāo)可以上下移動,數(shù)據(jù)庫變化時,結(jié)果集不變 ResultSet.TYPE_SCROLL_SENSITIVE 返回可滾動的結(jié)果集,數(shù)據(jù)變化時,結(jié)果集同步改變 Concurrency取值:決定是否可以用結(jié)果集更新數(shù)據(jù)庫 ResultSet.CONCUR_READ_ONLY 不能用結(jié)果集更新數(shù)據(jù)庫中的表 ResultSet.CONCUR_UPDATABLE 能用結(jié)果集更新數(shù)據(jù)庫中的表  滾動查詢常用的ResultSet的方法:public boolean previous() 將游標(biāo)向上移動,當(dāng)移動到結(jié)果集第一行之前時返回falsepublic void beforeFirst() 將游標(biāo)移動到結(jié)果集的初始位置,第一行之前public void afterLast() 將游標(biāo)移動到結(jié)果集的最后一行之后public void first() 將游標(biāo)移動到第一行public void last() 將游標(biāo)移動到最后一行public boolean isAfterLast() 判斷游標(biāo)是否在最后一行之后public boolean isBeforeFirst() 判斷游標(biāo)是否在第一行游標(biāo)之前public boolean isFirst() 判斷游標(biāo)是否指向第一行public boolean isLast() 判斷游標(biāo)是否指向最后一行public int getRow() 得到當(dāng)前游標(biāo)所指向的行號,行號從1開始,如果結(jié)果集沒有行,返回0public boolean absolute(int row) 將游標(biāo)移動到參數(shù)row指定的行(參數(shù)取負(fù)數(shù)即倒數(shù))

    (3)條件與排序查詢
    where子語句:select 字段 from 表明 where 條件

    (1)字段值與固定值比較 select * from table where name='張三'(2)字段值在某個區(qū)間 select * from table where number>5 and number<10 and name!='李四'(3)使用某些特殊的日期函數(shù)(Data:year-month-day)select * from table where year(表明日期的字段名)<1980 and month(表面日期的字段名)<=10select * from table where year(表明日期的字段名) between 2002 and 2021(4)使用某些特殊的時間函數(shù)(hour,minute,second) select * from timelist where second(表明時間的字段名)=36(5)用操作符like進行模式匹配,使用%代替0個或多個字符,用一個下劃線_代替一個字符。 select * from table where name like'%歐%' //查詢name字段有“歐”字的記錄

    order by語句:可結(jié)合where語句使用

    select * from table order by height select * from table where name like '%王%' order by name

    三、更新、添加和刪除操作

    Statement對象調(diào)用public int executeUpdate(String sqlStatement);通過參數(shù)指定的方式對數(shù)據(jù)庫表中的記錄的更新、添加和刪除操作。

    (1)更新 update 表名 set 字段 = 新值 where <條件子句>(2)添加 insert into 表 values (對應(yīng)具體的記錄)(3)刪除 delete from 表名 where <條件子句>

    四、使用預(yù)處理語句

    Java提供了更高效的數(shù)據(jù)庫操作機制,就是PreparedStatement對象,即預(yù)處理語句對象。將SQL語句處理為數(shù)據(jù)庫底層語句,再傳輸給數(shù)據(jù)庫。
    使用通配符:對SQL進行預(yù)處理時,可以用 通配符? 來代替字段的值,只要在預(yù)處理語句執(zhí)行之前再設(shè)置通配符所代表的具體值即可:

    String str = "select * from 表名 where 字段1 < ? and 字段2 = ?";PreparedStatement sql = con.prepareStatement(str);sql.setXxx(int parameterIndex,Type x);//該方法設(shè)置?代表的值,parameterIndex代表第幾個?,x代表要替換的值。

    五、通用查詢

    編寫通用查詢類,用戶可以將數(shù)據(jù)庫名、SQL語句傳遞給該類的對象,那么該對象就用一個二維數(shù)組返回查詢的記錄。
    編寫通用查詢類需要知道數(shù)據(jù)庫表列(字段)的名字和數(shù)量。常用方法為用結(jié)果集ResultSet對象rs調(diào)用getMetaData()方法返回一個ResultSetMetaData對象:

    ResultSetMetaData metaData = rs.getMetaData();

    然后該對象metaData調(diào)用getColumnCount()方法既可以返回rs中列的數(shù)目,調(diào)用getColumnName(int i)就可以返回結(jié)果集rs中第i列的名字。

    六、事務(wù)

    1,事務(wù)及處理
    事務(wù)由一組SQL語句組成。所謂事務(wù)處理,是指應(yīng)用程序保證事務(wù)中的SQL語句要么全部被執(zhí)行,要么一個都不被執(zhí)行。事務(wù)處理是保證數(shù)據(jù)庫中數(shù)據(jù)完整性與一致性的重要機制。

    2,JDBC事務(wù)處理
    用setAutoCommit(boolean b)方法關(guān)閉自動模式:
    即關(guān)閉SQL語句的即刻生效性,兩個相關(guān)聯(lián)的操作應(yīng)該在都執(zhí)行完畢后才改變數(shù)據(jù)庫中的數(shù)據(jù)。方法為在獲取sql對象前讓連接對象調(diào)用該方法:

    con.setAutoCommit(false);

    用commit()方法處理事務(wù):
    關(guān)閉自動模式后,讓sql對象提交多條SQL(即同一事務(wù))語句,這些語句不會立即生效,而是直到連接對象調(diào)用方法后全部生效:

    con.commit();

    用rollback()方法處理事務(wù)失?。?br /> 即撤銷事務(wù)所作的操作。在con調(diào)用commit()方法進行事務(wù)處理時,只要有一個SQL語句沒有執(zhí)行成功,那么該事務(wù)執(zhí)行失敗,拋出SQLException異常。這時必須讓con調(diào)用rollback()方法撤銷引起數(shù)據(jù)變化的所有操作:

    con.rollback();

    相關(guān)免費學(xué)習(xí)推薦:mysql視頻教程

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號