JDBC

快速入门

步骤:

      1.导入驱动jar包   mysql-connector-java-5.1.37-bin.jar

              1).复制  mysql-connector-java-5.1.37-bin.jar  到项目的libs目录下;

              2).右键---> Add   As Library  

     2.注册驱动

               Class.forName("com.mysql.jdbc.Driver");      案例是mysql 注册    jdk5之后的可以不用注册 自动完成注册

     3.获取数据库连接对象  Connection

      Connection conn= DriverManager.getConnection("jdbc:mysql://183.236.187.199:3306/cs2","root","root");

     4.定义sql

       String sql="select * from xuesheng";

     5.获取执行sql语句的对象  Statement

       Statement statement=conn.createStatement();

     6.执行sql,接受返回结果

      ResultSet rs=statement.executeQuery(sql);

     7.处理结果

      while (rs.next()){                 //遍历并显示

                 System.out.print(rs.getInt("xid")); //显示打印

                 System.out.print(rs.getString("xname"));

                 System.out.print(rs.getString("xxingbei"));
                 System.out.println(rs.getString("xnianl"));
}

     8.释放资源

         rs.close();

         statement.close();

        conn.close();

 

 

 

 

 

详解各个对象:

DriverManager:驱动管理对象

     1.注册驱动   

     2.获取数据库连接     

     方法: static Connection getConnection(String url,String 用户名,String 密码)//        

     参数 :url  :指定路径语法  "jdbc:mysql://ip地址(域名):端口 / 数据库名称”         如果是本机可以简写:   "jdbc:mysql:/// 数据库名称” 

      用户名:数据库的用户名    密码:数据库的密码

Connection :数据库连接对象

       1.获取执行sql的对象

         方法:    Statement CreateStatement();

          方法:    PreparedStatement PrepareStatement(String sql);

       2.事务管理

         开启事务  setAutoCommit(boolean autoCommit):调用该方法设置参数为false 即开启事务

                    *  在执行sql之前开启事务

         提交事务  commit()

                   *  在所有sql都执行完成提交事务

         回滚事务   rollback()

                    *  在 try ····catch····中的      catch里回滚事务

          

  Statement:执行sql执行的对象  

     1.执行sql

       boolean execute(String sql): 可以执行任意的sql  了解即可不常用

       int executeUpdate (String sql):执行DML语句(数据增删改)DDL(库的创建删除)语句; 返回值表示影响的行数   可以通过影响的行数判断是否成功  大于0表示成功;

       ResultSet executeQuery(String sql);执行DQL语句(查询)

      ResultSet:结果集对象

          next():游标向下移动一行

          getXX(): 获取数据   

                XX表示数据类型  获取什么数据就要写什么数据类型 如:int  getInt(),String     getString();

               参数:int  代表列编号 ,从1开始   如:getInt(1);         String :代表列名  如:getSting(“xingming”);

          注意:使用步骤:

               1.游标向下移动一行       2、判断是否有数据     3.获取数据

      PreparedStatement :执行sql的对象

              详见最末页;

 

 

 

 

《JAVA通过JDBC 操作数据库(增删改)》

 

创建Mysql表中的数据

1.连接远端数据库 183.236.187.199 端口3306  cs2数据库 2.通过createStatement() 方法在 xuesheng 表中创建 一个学生【14,'跛脚金','男','2000-01-09',1

 修改Mysql表中的数据

 流程同上面案例,增加个判断 如果返回值>0  输出成功    否则输出  失败

 

删除Mysql表中的数据

 

 流程同上面案例, 修改SQL语句即可  

 

 

 

 

 

查看Mysql表中的数据

1.连接数据库    2..通过.executeQuery( ) 方法 ,获取输入SQL查询语句 并返回结果集对象 3.遍历结果

 

案例1:通过JAVA程序输入用户名密码到 ---183.236.187.199  数据库服务器查询 user 用户名密码 --是否正确;

 

 数据库数据:

 

 java程序方法类:

 

 

 

 

  java主程序:

 

 

 

PreparedStatement:执行SQL的对象      ---------------------------------------------------------------------------------------- *  常用  *

1.SQL注入问题:在拼接sql时,有一些sql的特殊关键字与字符串的拼接,会造成安全问题;

  如:输入用户名随便输入, 密码:a’ or 'a'='a        拼接后例:select * from user where name='fdsfadgfdsagfd' and password='a' or 'a'='a';

2.解决sql注入问题:使用PreparedStatement 对象来解决;

3.使用预编译的sql,参数使用 ?作为占位符

4.步骤流程:

    1).注册驱动

    2).获取数据库连接对象 Connection;

    3).定义SQL  使用占位符;

         *注意:sql的参数使用? 作为占位符。例:select * from user where name=? and password=?;

    4).获取执行sql语句的对象 PreparedStatement      Connection.prepareStatement(string sql);   要先传入sql语句有占位符的如上

    5).给? 赋值: 给获取到的PreparedStatement 对象通过下面方法赋值。

          *方法:setXXX(参数1,参数2);    XX表示数据类型     参数1是 第一个?   参数2 是第2个问号以此类推

     6).执行sql,接受返回的结果 

            使用executeQuery() 方法提交给数据库查询,不带参数。

 

 

    7).处理结果;

     8).释放资源;

 

 案例:主要实验内容PreparedStatement:

主程序:

 

 

 

 

 方法 类;

 

 

 输入正确情况                                                                                    使用注入语句 密码错误

 

                               

 

 

 案例二:  主要实验内容 事务回滚  +PreparedStatement

程序:

 

 数据库执行前                                                            数据库执行后

                 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


posted @ 2021-06-24 00:01  mengjiabei  阅读(38)  评论(0)    收藏  举报