日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java面试题3 牛客:下面有关jdbc statement的说法错误的是

發(fā)布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java面试题3 牛客:下面有关jdbc statement的说法错误的是 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

下面有關(guān)jdbc statement的說法錯誤的是?

A JDBC提供了Statement、PreparedStatement 和 CallableStatement三種方式來執(zhí)行查詢語句, 其中 Statement 用于通用查詢, PreparedStatement 用于執(zhí)行參數(shù)化查詢,而 CallableStatement則是用于存儲過程 B 對于PreparedStatement來說,數(shù)據(jù)庫可以使用已經(jīng)編譯過及定義好的執(zhí)行計劃, 由于 PreparedStatement 對象已預(yù)編譯過,所以其執(zhí)行速度要快于 Statement 對象” C PreparedStatement中,“?” 叫做占位符,一個占位符可以有一個或者多個值 D PreparedStatement可以阻止常見的SQL注入式攻擊

當看到這道題的時候,十分蒙蔽,

如果要取得Statement接口實例化對象 需要依靠Connection提供的方法完成:

???????????????? ·取得Statement接口對象:public Statement createStatement()throws SQLException

取得數(shù)據(jù)庫接口對象后使用以下兩個方法實現(xiàn)數(shù)據(jù)庫操作:

??????????????? ·數(shù)據(jù)更新:public int executeUpdate()throws SQLException,返回更新行數(shù);

??????????????? ·數(shù)據(jù)查詢:public ResultSet executeQuery()throws SQLException。
編寫數(shù)據(jù)庫腳本

CREATE TABLE member(mid NUMBER,name VARCHAR2(20),birthday DATE DEFAULT SYSDATE,age number(3),note CLOB,CONSTRAINT pk_mid PRIMARY KEY(mid) );

數(shù)據(jù)更新操作:

范例2:數(shù)據(jù)增加

??????? ·INSERT INTO 表名稱(列,列,....)VALUES(值,值,...);

???

import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class OracleDemo {public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:acehzh";public static final String USER = "scott";public static final String PASSWORD = "tiger";public static void main(String[] args) throws Exception {// 1.加載數(shù)據(jù)庫驅(qū)動程序,此時不需要實例化,因為容器自己負責管理Class.forName(DBDRIVER);// 2.連接數(shù)據(jù)庫Connection con = DriverManager.getConnection(DBURL, USER, PASSWORD);// 3.進行數(shù)據(jù)庫操作Statement sta = con.createStatement();String sql = "INSERT INTO member(mid,name,birthday,age,note) VALUES "+ " (myseq.nextval,'張三',TO_DATE('1998-10-10','yyyy-mm-dd'),17,'是個人')";int len = sta.executeUpdate(sql);System.out.println("影響的行數(shù)據(jù):" + len);// 4.關(guān)閉數(shù)據(jù)庫con.close();}}

==============分割線===============

范例3:數(shù)據(jù)修改

·語法: UPDATE 表名稱 SET 字段=值,....WHERE 更新條件(s);

???

import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class OracleDemo {public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:acehzh";public static final String USER = "scott";public static final String PASSWORD = "tiger";public static void main(String[] args) throws Exception {// 1.加載數(shù)據(jù)庫驅(qū)動程序Class.forName(DBDRIVER);// 2.連接數(shù)據(jù)庫Connection con = DriverManager.getConnection(DBURL, USER, PASSWORD);// 3.數(shù)據(jù)庫操作Statement sta = con.createStatement();// 修改表String sql = "UPDATE member SET name='李四',birthday=SYSDATE,age=30 WHERE mid IN(2,4,5,6,7,8,9,10)";int len = sta.executeUpdate(sql);System.out.println("影響行數(shù):" + len);// 4.關(guān)閉數(shù)據(jù)庫con.close();}}

==============分割線===============

范例4:刪除數(shù)據(jù)

·語法:DELETE FORM 表名稱 WHERE 刪除條件(s);???

import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class OracleDemo {public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:acehzh";public static final String USER = "scott";public static final String PASSWORD = "tiger";public static void main(String[] args) throws Exception {// 1.加載數(shù)據(jù)庫驅(qū)動程序Class.forName(DBDRIVER);// 2.連接數(shù)據(jù)庫Connection con = DriverManager.getConnection(DBURL, USER, PASSWORD);// 3.數(shù)據(jù)庫操作Statement sta = con.createStatement();// 修改表String sql = "DELETE FROM member WHERE mid IN(2,4,6,8,10)";int len = sta.executeUpdate(sql);System.out.println("刪除成功,影響行數(shù):" + len);// 4.關(guān)閉數(shù)據(jù)庫con.close();}}

迅速的看一下評論,找到一哥們

好,你字最多,你最優(yōu)秀,拿來一波粘貼

1.Statement、PreparedStatement和CallableStatement都是接口(interface)。?
2.Statement繼承自Wrapper、PreparedStatement繼承自Statement、CallableStatement繼承自PreparedStatement。?
3.?
Statement接口提供了執(zhí)行語句和獲取結(jié)果的基本方法;?
PreparedStatement接口添加了處理 IN 參數(shù)的方法;?
CallableStatement接口添加了處理 OUT 參數(shù)的方法。?
4.?
a.Statement:?
普通的不帶參的查詢SQL;支持批量更新,批量刪除;?
b.PreparedStatement:?
可變參數(shù)的SQL,編譯一次,執(zhí)行多次,效率高;?
安全性好,有效防止Sql注入等問題;?
支持批量更新,批量刪除;?
c.CallableStatement:?
繼承自PreparedStatement,支持帶參數(shù)的SQL操作;?
支持調(diào)用存儲過程,提供了對輸出和輸入/輸出參數(shù)(INOUT)的支持;?

Statement每次執(zhí)行sql語句,數(shù)據(jù)庫都要執(zhí)行sql語句的編譯 ,?
最好用于僅執(zhí)行一次查詢并返回結(jié)果的情形,效率高于PreparedStatement。?

PreparedStatement是預(yù)編譯的,使用PreparedStatement有幾個好處?
1. 在執(zhí)行可變參數(shù)的一條SQL時,PreparedStatement比Statement的效率高,因為DBMS預(yù)編譯一條SQL當然會比多次編譯一條SQL的效率要高。?
2. 安全性好,有效防止Sql注入等問題。?
3.? 對于多次重復(fù)執(zhí)行的語句,使用PreparedStament效率會更高一點,并且在這種情況下也比較適合使用batch;?
4.? 代碼的可讀性和可維護性。


JDBC statement中的PReparedStatement的占位符對應(yīng)著即將與之對應(yīng)當值,并且一個占位符只能對應(yīng)一個值,如果能對應(yīng)多個就會引起混淆。sql語句是確定的,那么一個占位符必定只能對應(yīng)一個值

這題最終選擇c

文章僅個人理解,來在各大網(wǎng)站。如有不合理之處,歡迎吐槽。

閱讀目錄(置頂)(長期更新計算機領(lǐng)域知識)https://blog.csdn.net/weixin_43392489/article/details/102380691

閱讀目錄(置頂)(長期更新計算機領(lǐng)域知識)https://blog.csdn.net/weixin_43392489/article/details/102380882

閱讀目錄(置頂)(長期科技領(lǐng)域知識)https://blog.csdn.net/weixin_43392489/article/details/102600114

歌謠帶你看java面試題 https://blog.csdn.net/weixin_43392489/article/details/102675944

總結(jié)

以上是生活随笔為你收集整理的java面试题3 牛客:下面有关jdbc statement的说法错误的是的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。