文章出處

用框架用習慣了,以前最初級的連接數據庫方式都生疏了,接下來總結一下最初級的Java連接數據庫以及操作

先總結以下Java連接數據庫的步驟(orale),然后在舉例子操作Dao層

1.加載驅動:

Class.forName(“oracle.jdbc.driver.OracleDriver”);

2.獲取連接填寫數據庫名密碼等:

Connection c=DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”, “scott”, “scott”);

3.創建sql語句

String sql = “insert into bankst(id,username,userpwd,price) values(?,?,?,?) “;

4.創建statement對象或者創建preparedStatement對象

Statement st=conn.createStatement();

PreparedStatement ps = conn.prepareStatement(sql);

5.執行sql語句

st.execute(sql);

ps.executeUpdate();

6.處理結果集

使用JavaBean類保存結果

ResultSet rs = ps.executeQuery();

while (rs.next()) {

cusValue cv = new cusValue(rs.getString(“cusid”), rs.getString(“cusname”),

rs.getDate(“indate”),rs.getDate(“outdate”), rs.getString(“roomnumber”),rs.getDouble(“price”)

);

7.關閉連接

c.close

在程序中數據庫層:編寫連接和關閉的操作,main主函數是為了測試數據庫是否正確連接

package jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class jdbc {    public static void main(String[] args) {        System.out.println(jdbc.getConn());    }    public static Connection getConn(){        Connection c = null;        try {            Class.forName("oracle.jdbc.driver.OracleDriver");            c = DriverManager.getConnection(                    "jdbc:oracle:thin:@localhost:1521:orcl", "scott", "scott");        } catch (Exception e) {            e.printStackTrace();        }        return c;       }    public static  void closeConn(Connection c){        if(c!=null){            try {                c.close();            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }   }

Dao層操作:

package Dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import Value.loginValue;import jdbc.jdbc;/** * 1.PreparedStatement ps = conn.prepareStatement(sql);這個語句是實現預編譯的,對于批量處理可以大大提高效率.也叫JDBC存儲過程2.當然也可以使用 Statement 對象。在對數據庫只執行一次性存取的時侯,用 Statement 對象進行處理。    PreparedStatement對象的開銷比Statement大,對于一次性操作并不會帶來額外的好處。3.statement每次執行sql語句,相關數據庫都要執行sql語句的編譯,preparedstatement是預編譯得4.可以通過ps.set(1,數值)進行賦值,注意是從1開始的,而不像hibernate的p=Session.createSQLQuery(sql);然后再p.setInteger(0, bv.getId());是從0開始的 * @author lenovo * */public class userDao {    /**     * 注冊 即增加操作     * @param lv     * @return     */    public boolean zhuce(loginValue lv){        Connection conn=null;        try{        conn=jdbc.getConn();        String sql = "insert into htuser values(?,?)";        PreparedStatement ps = conn.prepareStatement(sql);        ps.setString(1, lv.getUsername());        ps.setString(2, lv.getUserpwd());        ps.executeUpdate();        return true;        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            jdbc.closeConn(conn);        }        return false;     }    /**     * 登錄即查找操作,只不過加了判斷     * @param username     * @param userpwd     * @return     */    public boolean login(String username,String userpwd){        Connection conn=null;        try{            conn=jdbc.getConn();            String sql="select *from htuser where username=? and userpwd=? ";            PreparedStatement ps = conn.prepareStatement(sql);            ps.setString(1, username);            ps.setString(2,userpwd);            ResultSet rs = ps.executeQuery();            if(rs.next())                return true;        }catch(Exception e){            e.printStackTrace();        }finally{            jdbc.closeConn(conn);        }        return false;    }    /**、     * 查找全部     * @return     */    public List<loginvalue> selectAll(){        List<loginvalue> lv = new ArrayList<loginvalue>();        Connection conn=null;        try{            conn=jdbc.getConn();            String sql="select *from htuser";            PreparedStatement ps = conn.prepareStatement(sql);            ResultSet rs = ps.executeQuery();            while (rs.next()) {                loginValue l = new loginValue(rs.getString("username"),rs.getString("userpwd"));                lv.add(l);            }        }catch(Exception e){            e.printStackTrace();            }finally{            jdbc.closeConn(conn);        }        return lv;    }    /**     * 按名字刪除     * @param username     * @return     */    public boolean deleteUser(int username){        Connection conn=null;        try{            conn=jdbc.getConn();            String sql="delete from htuser where username=?";            PreparedStatement ps=conn.prepareStatement(sql);            ps.setInt(1, username);            boolean b=ps.execute();            if(!b){                return true;            }        }catch(Exception e){            e.printStackTrace();        }finally{            jdbc.closeConn(conn);        }        return false;    }    /**     * 修改操作     * @param lv     * @return     */    public boolean alterUser(loginValue lv){        Connection conn=null;        try{            conn=jdbc.getConn();            String sql="update htuser set userpwd=? where username=?";            PreparedStatement ps=conn.prepareStatement(sql);            ps.setString(1, lv.getUsername());            ps.setString(2, lv.getUserpwd());            boolean b=ps.execute();            if(!b){                return true;            }                   }catch(Exception e){            e.printStackTrace();        }finally{            jdbc.closeConn(conn);        }        return false;    }}

就是這些了,忘了就看看這個,應該可以想起來,最后大家新年快樂,嘎嘎

看文倉www.kanwencang.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20170129/96466.html

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()