A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2018-5-27 19:59  /  4539 人查看  /  56 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 13163997058 于 2018-5-28 12:51 编辑

王刘锁
在艰难的学完数据库MySQL之后今天终于回到了久违了近10天的eclipse
.一切还是那么陌生,好不容易记住的又想不起来了,像什么快捷键和一些语法!
不过在今天的学习中我们又重新找回了一些记忆,当然也是学了一些新知识.今儿主要学习JDBC
它是一个用来连接数据库的纽带好让我们可以用Java语言执行SQL语句来访问数据库,
其实就是SUN公司提供的一组接口和类的规范,
在使用的时候我们首先要先把提供的jar包给导进来把配置环境做好也就是build path,一说就可以想的起来,
接下来说一下怎么访问数据库,
第一步:需要注册驱动 驱动就是设备间互相访问的通道!格式是固定的记住就行
利用反射获得class文件:
     Class.forName(com.mysql.jdbc.Driver//driverClassName)
第二步:获取和数据库的连接,同样固定的格式
     Connection conn=DriverMannager.getConnectio("jdbc:mysql://localhost:3306/db1","root","root");第一个参
数是jdbc:mysql://数据库IP地址:端口,后面两个是自己的用户名和密码
第三步:获取执行sql语句的Statement对象,固定格式
Statement stmt = conn.createStatement();
第四步:写sql语句:这里sql语句一定要写正确,
     String sql = "select * from xsb";//查询 "delete from xsb where sid=3";//删除
    "update xsb sname='小阿香',sex='男' where sid=3";//修改
    "insert into xsb values(null,'小龙龙','女')";//添加
第五步:执行sql语句:
如果是查询语句要用结果集来接收,然后遍历结果集
     ResultSet rs=stmt.executeQuery(sql);
        while(rs.next()){
        System.out.println(rs.getInt("sid")+rs.getString("sname")+rs.getString("sex"));
        }
如果是增删改的话:
     int num =stmt.executeUpdate(sql);
        if(num>0){
        System.out.println("操作成功!!");
        }
第六步:最重要的一步,释放资源,
     rs.close();
     stmt.close();
     conn.close();
当然写完这些代码发现好多重复的代码!那今天还学习了抽取工具类,这里不多说了,把相同的代码抽取出来就可以,另外为
了让客户可以方便的修改个人信息还学习了设置配置文件,让客户可以直接修改文件中的信息.
此外呢还有一个sql的注入问题也就是当别人知道用户名的时候可以利用[用户名 ' or ' 1=1 ]这样的方式在sql语句加载执行的时候把sql语句拼接成[username='用户名' or '1=1' and password='密码']的格式,这时因为or关键字和1=1等式的永成立这个sql语句的条件就会永远成立,因此无论输入的密码是否正确都会登录成功!,不知道我的qq号是不是这样被人给盗的!但是今天学习了这个preparedStatement就可以解决被盗号问题了,.
这里就把改变的代码部分写出来好了,
第一步:注册驱动,
第二步:获取连接,
第三步:获取执行sql语句的对象并执行sql语句
     String sql = "insert into xsb values(null,?,?)";
     这里的信息被?占位
     PreparedStatement stmt = conn.preparStatment(sql);
     然后给?赋值,这里的1,2是第一第二个?
     stmt.setString(1,"小敏");
     stmt.setString(2,"女");
     执行sql语句
     int num = stmt.executeUpdate();
        if(num>0){
        System.out.println("操作成功!!");
        }
第四步:释放资源.
在最后声明一下,这里的代码要用try{以上代码}catch(异常类型){异常处理}finall{释放资源}给捕获才行!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马