麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

jdbc的用法

2019-11-14 10:16:40
字體:
來源:轉載
供稿:網友
一,JDBC基本操作  為了簡單起見,與數據庫相關的操作、命令、參數都被硬編碼了。有興趣的讀者可以對這些進行探索,降低數據與操作的耦合性。  先看具體代碼并實踐,本文第五部分對用到的API稍作了研究?! ∠旅娴乃蟹椒ê蛿祿蓡T都在public class JDBCOperation內部。(1)定義記錄的類(可選)  這樣做主要是為了便于操作和接口定義,是非必須的。復制代碼static class Student {        PRivate String Id;        private String Name;        private String Sex;        private String Age;        Student(String Name, String Sex, String Age) {            this.Id = null; //default            this.Name = Name;            this.Sex = Sex;            this.Age = Age;        }        public String getId() {            return Id;        }        public void setId(String Id) {            this.Id = Id;        }        public String getName() {            return Name;        }        public void setName(String Name) {            this.Name = Name;        }        public String getSex() {            return Sex;        }        public void setSex(String Sex) {            this.Sex = Sex;        }        public String getAge() {            return Age;        }        public void setage(String Age) {            this.Age = Age;        }}復制代碼 (2)連接的獲取  在操作前必須先獲取與數據庫的連接?! river、url的格式同樣可以參考各種數據庫對應的jar包、驅動類名和URL格式。復制代碼private static Connection getConn() {    String driver = "com.MySQL.jdbc.Driver";    String url = "jdbc:mysql://localhost:3306/samp_db";    String username = "root";    String passWord = "";    Connection conn = null;    try {        Class.forName(driver); //classLoader,加載對應驅動        conn = (Connection) DriverManager.getConnection(url, username, password);    } catch (ClassNotFoundException e) {        e.printStackTrace();    } catch (SQLException e) {        e.printStackTrace();    }    return conn;}復制代碼 (3)insert復制代碼private static int insert(Student student) {    Connection conn = getConn();    int i = 0;    String sql = "insert into students (Name,Sex,Age) values(?,?,?)";    PreparedStatement pstmt;    try {        pstmt = (PreparedStatement) conn.prepareStatement(sql);        pstmt.setString(1, student.getName());        pstmt.setString(2, student.getSex());        pstmt.setString(3, student.getAge());        i = pstmt.executeUpdate();        pstmt.close();        conn.close();    } catch (SQLException e) {        e.printStackTrace();    }    return i;}復制代碼 (4)update復制代碼private static int update(Student student) {    Connection conn = getConn();    int i = 0;    String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'";    PreparedStatement pstmt;    try {        pstmt = (PreparedStatement) conn.prepareStatement(sql);        i = pstmt.executeUpdate();        System.out.println("resutl: " + i);        pstmt.close();        conn.close();    } catch (SQLException e) {        e.printStackTrace();    }    return i;}復制代碼 (5)select  以select * from XXX為例。復制代碼private static Integer getAll() {    Connection conn = getConn();    String sql = "select * from students";    PreparedStatement pstmt;    try {        pstmt = (PreparedStatement)conn.prepareStatement(sql);        ResultSet rs = pstmt.executeQuery();        int col = rs.getMetaData().getColumnCount();        System.out.println("============================");        while (rs.next()) {            for (int i = 1; i <= col; i++) {                System.out.print(rs.getString(i) + "/t");                if ((i == 2) && (rs.getString(i).length() < 8)) {                    System.out.print("/t");                }             }            System.out.println("");        }            System.out.println("============================");    } catch (SQLException e) {        e.printStackTrace();    }    return null;}復制代碼 (6)delete復制代碼private static int delete(String name) {    Connection conn = getConn();    int i = 0;    String sql = "delete from students where Name='" + name + "'";    PreparedStatement pstmt;    try {        pstmt = (PreparedStatement) conn.prepareStatement(sql);        i = pstmt.executeUpdate();        System.out.println("resutl: " + i);        pstmt.close();        conn.close();    } catch (SQLException e) {        e.printStackTrace();    }    return i;}復制代碼 二、測試  在測試前,需要在系統中打開對應數據庫的服務。MySQL在Windows下的啟動命令為net start mysql   測試代碼復制代碼public static void main(String args[]) {    JDBCOperation.getAll();    JDBCOperation.insert(new Student("Achilles", "Male", "14"));    JDBCOperation.getAll();    JDBCOperation.update(new Student("Bean", "", "7"));    JDBCOperation.delete("Achilles");    JDBCOperation.getAll();}復制代碼   Eclipse中的輸出復制代碼============================1    Ender        male    8    2    Bean        male    6    3    Petra        fema    9    4    Peter        male    9    5    _Graff        male    40    6    GOD        fema    255    ========================================================1    Ender        male    8    2    Bean        male    6    3    Petra        fema    9    4    Peter        male    9    5    _Graff        male    40    6    GOD        fema    255    7    Achilles    Male    14    ============================resutl: 1resutl: 1============================1    Ender        male    8    2    Bean        male    7    3    Petra        fema    9    4    Peter        male    9    5    _Graff        male    40    6    GOD        fema    255    ============================復制代碼 三、代碼分析  在上述對數據庫進行增刪改查的過程中,可以發現其共性部分,即通用的流程:  (1)創建Connection對象、SQL查詢命令字符串;  (2)對Connection對象傳入SQL查詢命令,獲得PreparedStatement對象;  (3)對PreparedStatement對象執行executeUpdate()或executeQurey()獲得結果;  (4)先后關閉PreparedStatement對象和Connection對象?! 】梢?,使用JDBC時,最常打交道的是Connection、PreparedStatement這兩個類,以及select中的ResultSet類。查閱java API手冊可以了解其具體的意義和方法?! ∠旅嬉玫腏ava API的資料出自http://download.Oracle.com/technetwork/java/javase/6/docs/zh/api/index.html?!   onnectionjava.sql 接口 Connection所有超級接口:Wrapperpublic interface Connectionextends Wrapper 與特定數據庫的連接(會話)。在連接上下文中執行 SQL 語句并返回結果。Connection 對象的數據庫能夠提供描述其表、所支持的 SQL 語法、存儲過程、此連接功能等等的信息。此信息是使用 getMetaData 方法獲得的。   PreparedStatemntjava.sql 接口 PreparedStatement所有超級接口:Statement, Wrapper所有已知子接口:CallableStatementpublic interface PreparedStatementextends Statement表示預編譯的 SQL 語句的對象。SQL 語句被預編譯并存儲在 PreparedStatement 對象中。然后可以使用此對象多次高效地執行該語句。 常用方法 boolean  execute()          在此 PreparedStatement 對象中執行 SQL 語句,該語句可以是任何種類的 SQL 語句。 ResultSet  executeQuery()          在此 PreparedStatement 對象中執行 SQL 查詢,并返回該查詢生成的 ResultSet 對象。 int  executeUpdate()          在此 PreparedStatement 對象中執行 SQL 語句,該語句必須是一個 SQL 數據操作語言(Data Manipulation Language,DML)語句,比如 INSERT、UPDATE 或 DELETE 語句;或者是無返回內容的 SQL 語句,比如 DDL 語句?!   esultSet  java.sql 接口 ResultSet所有超級接口:Wrapper所有已知子接口:CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, RowSet, SyncResolver, WebRowSetpublic interface ResultSetextends Wrapper表示數據庫結果集的數據表,通常通過執行查詢數據庫的語句生成。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品久久久久久久久久久久久久久久 | 国产免费最爽的乱淫视频a 毛片国产 | 91精品国产91久久久 | 国产日韩一区二区三区在线观看 | 免费毛片小视频 | 精品亚洲午夜久久久久91 | 精品中文字幕久久久久四十五十骆 | 欧美一级色片 | www国产网站| 91精品国产92久久久久 | 国产一精品一av一免费爽爽 | 黄色特级视频 | 精品中文字幕视频 | 欧美视频国产 | 亚洲成人伊人 | 国产乱一区二区三区视频 | 日韩一级网站 | 欧美成在线视频 | av日韩一区二区三区 | 91av资源在线 | 粉嫩蜜桃麻豆免费大片 | 在线观看av国产一区二区 | 97视频| 国产欧美日韩视频在线观看 | 欧美伦理一区二区 | xxxxhd73国产 | 欧美日韩亚洲国产精品 | 久草视频免费 | 国产精品久久久久一区二区 | 国产精品色综合 | 欧美黄色免费视频 | 香蕉久久久久 | 亚洲午夜天堂吃瓜在线 | 国产一区二区高清在线 | 精品国产1区2区3区 av视屏 | 欧美一极视频 | 久久久av亚洲男天堂 | 国产精品视频一区二区三区四 | 成年人视频免费看 | 性欧美暴力猛交69hd | 9999久久 |