原始的jdbc连接数据库以及操作(小总结)

7 篇文章 0 订阅
1 篇文章 0 订阅

用框架用习惯了,以前最初级的连接数据库方式都生疏了,接下来总结一下最初级的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;
    }
}

就是这些了,忘了就看看这个,应该可以想起来,最后大家新年快乐,嘎嘎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值