JDBC

JDBC 是 java 数据库连接标准,是用于 Java 应用程序连接各种数据库的标准方法。 

    1)对 java 程序员来讲:JDBC 是一套访问数据库的 API,通过这套 API 能够实现 java 代码对数据 库的操作 

    2)对数据库厂商来讲:JDBC 是一套底层的 java 语言接口模型,为各数据库厂商及第三方中间件 厂商实现与数据库的连接提供了标准服务方法 

因为 JDBC 服务的标准是统一的,所以各个 数据库厂商依据标准提供了自己数据库的 JDBC 驱动 程序  。以MySQL为例:

JDBC连接数据库的过程:

1:加载驱动:

Class.forName(“com.mysql.jdbc.Driver”);加载驱动是将驱动跟当前的 java 程序建立关联,com.mysql.jdbc.Driver 是 MySql 的驱动类的类名, 目前必须这么写

2:建立连接:

        String URL = "jdbc:mysql://localhost:3306/db1"; 

        String USER = "root"; 

        String PWD = "admin"; 

        Connection conn = DriverManager.getConnection(URL, USER, PWD); 

      连接对象内部其实包含了Socket对象,是一个远程的连接。比较耗时!这是Connection对象管理的一个要点!)
*真正开发中,为了提高效率,都会使用连接池来管理连接对象!

3:创建执行对象

(1)  //其中字符和日期数据还需要加上单引号(''),容易发生SQL 注入

                  String sql = "insert into product(pbrand,ptype,color,store,price) values('"+pbrand+"','"+ptype+"','"+color+"',"+store+","+price+")";()   

                  Statement   stmt = conn.createStatement(); 

        (2)String sql = "insert into product(pbrand,ptype,color,store,price) values(?,?,?,?,?)";   

                  PreparedStatement    pstmt = conn.prepareStatement(sql);

                  pstmt.setString(1, "联想");  //sql- char varchar      

                  pstmt.setString(2,"E430");  

                  pstmt.setString(3,"黑色");

                  pstmt.setInt(4, 10);  

                  pstmt.setBigDecimal(5, new BigDecimal(4100));       

(3)<1>String sql = "{call sp_findallproduct()}";//调用存储过程sql语句 

               CallableStatement cstmt = conn.prepareCall(sql); 

<2>String sql = "{call sp_findByCondition(?,?,?)}"

                        CallableStatement cstmt = conn.prepareCall(sql); 

                        cstmt.setString(1, "联想"); //给参数赋值   

                       cstmt.setString(2, ""); //可以变化参数   

                       cstmt.setString(3, "白色"); 


4:执行SQL语句

增删改

        (1 int  result = stmt.executeUpdate(sql); //对于 Statement,它不会在 java 环境中执行 sql 语句的,本质 上是它通过驱动将要执行的 sql 语句发送到数据库服务器执行,

(2)int   result = pstmt.executeUpdate(); //返回的是 int 类型,即前面 提到的影响的行数,根据返回值判断操作是否成功。 

     查询:

        String sql = "select * from product where pid=?"; 

ResultSet rs = pstmt.executeQuery();

       ResultSet rs = cstmt.executeQuery();

        if(rs.next()){ //根据主键查询,结果只能是1条,没必要使用while     //打印rs     

                System.out.println(rs.getInt(1)+","+               

                 rs.getString(2)+","+               

                 rs.getString(3)+","+             

                 rs.getString(4)+","+                 

                 rs.getInt(5)+","+              

                 rs.getBigDecimal(6)+","+                 

                 rs.getString(7));    } 

5:关闭资源

stmt.close();

pstmt.close();

cstmt.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值