JDBC一周

JDBC: java database connectivity java 数据库连接
    Java程序是客户端 Client          Client              Server
    MySQL是服务器  Server           Java代码------------>mysql
    
    一套规范的API (Application interface) 作用: 提供各种各样的功能
    即是Java提供了一套规范接口,各大数据库厂商自己写实现类
    
    java.sql.* ;  jar 包是各大数据库厂商自己写的实现类
    mysql的第三方jar包是mysql-connector-java.jar 是自己实现的
    oracle的jar包是ojdbc.jar 
    
    JDBC的开放步骤:
        1.创建工程,导入mysql-connector-java.jar
        2.连接数据库
    //驱动MySQL连接
    Class.forName("com.mysql.jdbc.Driver");
    //连接数据库
    String url = "jdbc:mysql:localhost:3306/数据库名?characterEncording=UTF8";
    Stirng user = "root";
    String password = "root";
    Connection conn = DriverManager.getConnection(url,user,password);
    Statement state = conn.createStatement();
    String sql = "select * from emp ";
    state.executeQuery(sql);
    String zeng = "insert into person(字段列表) values(值列表);
    String shan = "delete from person where id = ?";
    String gai = "update person set pname = ? where id = ?";
    state.executeUpdate(zeng);
    state.executeUpdate(shan);
    state.executeUpdate(gai)
    ResultSet 结果集
            rs.next();判断是否有下一条记录
            rs.getInt();
            rs.getString();
            rs.getDate();
            rs.getObject();
====================================================================================================
ORM映射思想: Object Realationship Mapping 对象关系映射思想
    出现原因: 因为Java是面向对象语言,MySQL管理的是关系型数据库,两者是完全不相关的
            所以出现ORM映射思想,将两者包裹起来,完成数据的映射
JDBC的五个包:
        util工具包,pojo实体类包,dao接口包,daoImpl接口实现类包,test测试包
    首先根据数据库表完成实体类的映射,然后根据所需功能设计dao接口的功能设计,之后根据具体需求实现接口中的方法,最后进行测试
    Table -----> Entity 实体
    Record ----> Object 即是new出来的对象
    Column ----> property  属性
====================================================================================================
为防止出现sql注入问题,所以拼接sql语句的时候用?来替代
sql注入: select * from T_users where loginName = '"+loginName+"' and userPwd = '' or '1' = '1'
eg:String sql = " select * from emp where emp.no = ?";
   PreparedStatement ps = new preparestatement(sql);
   ResultSet rs = ps.executeQuery();
   …………
PreparedStatement 和 Statement的区别:
 1.PreparedStatement接口 是 Statement 子接口
 2.PreparedStatement 预编译可以防止sql注入问题,保证安全性
 3.PreparedStatement对象对于 执行效率  要比Statement 执行效率高
====================================================================================================
多表查询 : 
    1.一对一 user表和身份证表 select * from `user` u inner join idCard i on u.uid = i.uid 
                                    where i.iid = ?;    
    2.一对多 品牌表和商品表   select * from brand b inner join product p on b.bid = p.bid 
                                    where b.bname = ?;
    3.多对多 商品表和订单表   select * from product p inner join item i on p.pid = i.pid 
                                                        join order on o.oid = i.oid
                    where orderCode = ?;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隔壁李大力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值