使用Java對數(shù)據(jù)庫進行基本的查詢和更新操作
數(shù)據(jù)庫查詢
利用Connection對象的createStatement方法建立Statement對象,利用Statement對象的executeQuery()方法執(zhí)行SQL查詢語句進行查詢,返回結果集,再形如getXXX()的方法從結果集中讀取數(shù)據(jù)。經(jīng)過這樣的一系列步驟就能實現(xiàn)對數(shù)據(jù)庫的查詢。
【例】Java應用程序訪問數(shù)據(jù)庫。應用程序打開考生信息表ksInfo,從中取出考生的各項信息。設考生信息數(shù)據(jù)庫的結構如下:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.sql.*; public class Example10_9 extends JFrame implements ActionListener{ public static Connection connectByJdbcodbc(String url, String username,String password){ Connection con = null; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加載ODBC驅動程序 } catch (Exception e){ e.printStackTrace(); return null; //加載失敗,連接不成功 } try{ con = DriverManager.getConnection(url, username, password); } catch (SQLException e){ e.printStackTrace(); return null; //連接失敗 } return con; //連接成功 } String title[] ={"考號", "姓名", "成績", "地址", "簡歷"}; JTextField txtNo = new JTextField(8); JTextField txtName = new JTextField(10); JTextField txtScore = new JTextField(3); JTextField txtAddr = new JTextField(30); JTextArea txtresume = new JTextArea(); JButton prev = new JButton("前一個"); JButton next = new JButton("后一個"); JButton first = new JButton("第一個"); JButton last = new JButton("最后一個"); Statement sql; //SQL語句對象 ResultSet rs; //存放查詢結果對象 Example10_9(Connection connect){ super("考生信息查看窗口"); setSize(450, 350); try{ sql = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM ksInfo"); Container con = getContentPane(); con.setLayout(new BorderLayout(0, 6); JPanel p[] = new JPanel[4]; for (int i = 0; i < 4; i++){ p[i] = new JPane(new FlowLayout(FlowLayout.LEFT, 8, 0)); p[i].add(new JLabel(title[i])); } p[0].add(txtNo); p[1].add(txtName); p[2].add(txtScore); p[3].add(txtAddr); JPanel p1 = new JPane(new GridLayout94, 1, 0, 8)); JScrollPane jsp = new JScrollPane(txtResume, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); jsp.setPreforredSize(new Dimension(300, 60); for (int i = 0; i < 4; i++){ p1.add(p[i]); } JPanel p2 = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0); p2.add(new JLabel(title[4])); p2.add(jsp); Jpanel p3 = new Jpanel(); p3.add(prev); p3.add(next); p3.add(first); p3.add(last); prev.addActionListener(this); next.addActionListener(this); first.addActionListener(this); last.addActionlistener(this); rs.first(); readRecord(); } catch (Exception e){ e.printStackTrace(): } setVisible(ture); } public void modifyRecord(Connection connect){ String stuNo = (String)JOptionPane.showInputDialog(null, "請輸入考生考號", "輸入考號對話框", JOptionPane.PLAIN_MESSAGE, null, null, ""); try { sql = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM ksInfo"); Container con = getContentPane(); con.setLayout(new Boarderlayout(0, 6)); Jpanel p[] = new JPanel[4]; for (int i = 0; i < ; i++){ p[i] = new JPane(new FlowLayout(flowLayout.LEFT, 8, 0)); p[i].add(new JLabel(title[i])); } p[0].add(txtNo); p[1].add(txtName); p[2].add(txtScore); p[3].add(txtAddr); Jpanel p1 = new Jpane(new GridLayout(4, 1, 0, 8)); JScrollPane jsp = new JScrollPane(txtResume, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); jsp.setPreferredSize (new dimension(300, 60)); for (int i = 0; i < 4; i++){ p1.add(p[i]); } Jpanel p2 = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0)); p2.add(new JLableI(title[4])); p2.add(jsp); JPanel p3 = new JPanel(); p3.add(prev); p3.add(next); p3.add(first); p3.add(last); prev.addActionListener(this); next.addActionListener(this); first.addActionListenerIthis); last.addActionListener(this); rs.first(); readRecord(); } catch (Exception e){ e.printStackTrace(); } setVisible(true); } boolean readRecord(){ try{ txtNo.setText(rs.getString("考號")); txtName.setText(rs.getString("姓名")); txtScore.setText(rs.getString("成績")); txtAddr.setText(rs.getString("地址")); txtResume.setText(rs.getString("簡歷")); } catch (SQLException e){ e.printStackTrace(); return false; } return true; } public void actionPerformed(ActionEvent e){ try{ if (e.getSource() == prev)rs.previous(); else if (e.getSource() == next)rs.next(); else if (e.getSource() == first)rs.first(); else if (e.getSource() == last)rs.last(); readRecord(); } catch (Exception e2){} } public static void main(String args[]){ connection connect = null; JFrame .setDefaultLookAndFeeDecorated(true); Font font = new Font("JFrame", Font.PLAIN, 14); if ((connect =connectByJdbcOdbc("jdbc:odbc:redsun", "xia", "1234")) == null){ JOptionPane.showMessageDialog(null, "數(shù)據(jù)庫連接失敗!"); System.exit ( - 1); } new Example10_9(connect); //創(chuàng)建對象 } }
Java數(shù)據(jù)庫更新
數(shù)據(jù)庫更新操作包括數(shù)據(jù)表創(chuàng)建、刪除、以及數(shù)據(jù)表記錄的增加、刪除、修改等操作。如果利用數(shù)據(jù) SQL命令實現(xiàn),則利用Statement對旬的executeUpdate()方法,執(zhí)行SQL的update語句,實現(xiàn)數(shù)據(jù)表的修改;執(zhí)行SQL的insert語句,實現(xiàn)數(shù)據(jù)表記錄的添加。
例如,在前面數(shù)據(jù)為查詢例子基礎上,再增加對數(shù)據(jù)表的修改和插入。限于篇幅,不再給出完整程序,只給出實現(xiàn)修改和插入的方法。程序可再增設插入、,,除保存按鈕,通過已有的瀏覽,定位到數(shù)據(jù)表的特定位置,對癰疽記錄進行編輯修改,或插入,或刪除,然后按保存按鈕,完成修改后的數(shù)據(jù)表保存。
下面用代碼說明數(shù)據(jù)表更新的方法。與數(shù)據(jù)表連接時,需指定獲得的ResultSet 對象是可更新的。
stmt = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
- 使用Java實現(xiàn)先查詢緩存再查詢數(shù)據(jù)庫
- Java對MySQL數(shù)據(jù)庫進行連接、查詢和修改操作方法
- Java mysql數(shù)據(jù)庫并進行內(nèi)容查詢實例代碼
- 在Java的Hibernate框架中對數(shù)據(jù)庫數(shù)據(jù)進行查詢操作
- java 使用ElasticSearch完成百萬級數(shù)據(jù)查詢附近的人功能
- java實現(xiàn)的連接數(shù)據(jù)庫及模糊查詢功能示例
- Java連接mysql數(shù)據(jù)庫并進行內(nèi)容查詢的方法
- java查詢近七日數(shù)據(jù)功能的實現(xiàn)
相關文章
springmvc實現(xiàn)導出數(shù)據(jù)信息為excle表格示例代碼
本篇文章主要介紹了springmvc實現(xiàn)導出數(shù)據(jù)信息為excle表格,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。2017-01-01springboot自定義redis-starter的實現(xiàn)
這篇文章主要介紹了springboot自定義redis-starter的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10AJAX Servlet實現(xiàn)數(shù)據(jù)異步交互的方法
本篇文章主要介紹了AJAX Servlet實現(xiàn)數(shù)據(jù)異步交互的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07