jdbc

  • 用途

简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果

  • 怎么使用jdbc

贾  --》jar包(导入jar)

琏  à连接对象

欲  àsql 语句

执 –-》curd(增删改查)

事à 关闭连接 释放资源

  • 使用jdbc进行curd
  1. 添加jar

  1. 创建连接对象(注意:jdbc中操作用到的对象 都是在import java.sql.Connection;)

//获取连接对象

static Connection connection;

    //静态代码块 执行时机  只会在类第一次被加载的时候执行 并且始终只会执行一次

    static{

      

       try {

           //1.加载驱动

           Class.forName("com.mysql.jdbc.Driver");

           //2.获取连接对象

           //url 路径 数据库在哪里

           //user 填写的 是连接数据库的用户名 root

           //password 填写的 是连接数据库的密码 root

           //jdbc:mysql://localhost:3306/数据库名字

       connection=   DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/7505test", "root", "root");

       } catch (ClassNotFoundException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } catch (SQLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

      

    }

 

  1. 执行新增操作

public static void main(String[] args) {

        add_subject("dba", 12, 4);

    }

   

    /**

     * 新增科目

     * @return  0 新增失败 其他新增成功

     */

    public static int  add_subject(String  subjectname,int hour,int gradeid) {

       int num=0;

       PreparedStatement ps=null;

       //每次在java中编写sql 请先在navicate中将 sql语句写好 运行无问题再copy

       //1.编写sql

       //参数用?代替 不管什么类型 ?都不需要加 ''

       String  sql="insert into `subject` values(NULL,?,?,?)";

       //获取执行对象

           try {

                ps=   connection.prepareStatement(sql);

               //给参数赋值 

               //parameterIndex参数索引  jdbc操作的时候 索引都是从1开始

               ps.setObject(1, subjectname);

               ps.setObject(2, hour);

               ps.setObject(3, gradeid);

              

               //执行新增操作

               //execute执行  Query查询  executeQuery()--》执行查询操作  executeUpdate()-->执行更新操作(增删改)

             num=   ps.executeUpdate();

              

           } catch (SQLException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }finally {

              //先创建后关闭 后创建先关闭

              try {

                  ps.close();

                  //连接对象

                  //connection.close();

              } catch (SQLException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

              }

             

           }

      

      

       return  num;

    }

 

  1. 删除操作(根据主键删除)

public static void main(String[] args) {

       // add_subject("dba", 12, 4);

       deletebyid("16");

    }

    /**

     * 删除

     * @param id 科目id

     * @return  0删除失败  其他删除成功

     */

    public static int deletebyid(String id) {

       int num=0;

      

       //sql语句

       String sql="delete  from `subject` where SubjectId=?";

       //执行对象是根据sql语句来的 所以每次需要重新获取执行对象

       PreparedStatement   ps=null;

          try {

       ps= connection.prepareStatement(sql);

       //sql的参数赋值

       ps.setObject(1, id);

       //执行删除操作

    num=   ps.executeUpdate();

    if (num>0) {

       System.out.println("删除成功");

    }else {

       System.out.println("系统正忙........");

    }

      

       } catch (SQLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }finally {

           try {

              ps.close();

           } catch (SQLException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

       }

 

       return num;

      

    }

  1. 修改(在后续修改的操作一般都是通过主键来完成)

public static void main(String[] args) {

       // add_subject("dba", 12, 4);

       //deletebyid("16");

       update_subject("啊啊啊啊", 15, 44, 2);

      

    }

 

    public static int update_subject(String subjectname, int subjectid, int hour, int gradeid) {

        int num = 0;

       String sql = "update `subject` set SubjectName=?,ClassHour=?, GradeId=? where SubjectId=?";

       //

       PreparedStatement ps = null;

 

       try {

           ps = connection.prepareStatement(sql);

           // sql的参数赋值 参数 1,2代表的是sql中第几个?

           ps.setObject(1, subjectname);

           ps.setObject(2, hour);

           ps.setObject(3, gradeid);

           ps.setObject(4, subjectid);

           num = ps.executeUpdate();

           if (num > 0) {

              System.out.println("修改成功");

           } else {

              System.out.println("未知错误....");

           }

       } catch (SQLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }finally {

           try {

              ps.close();

           } catch (SQLException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

       }

 

       return num;

    }

  1. 查询

查询全部科目信息

思路分析:

查询操作与增删改不一样 返回的不是受影响的行数,而是一行或多行记录

如果我需要将数据库中数据查询出现显示在页面该怎么传递呢?

所以引用javabean(数据库的每一张表创建一个类与其对应,表名与类名相同,属性名与列名相同)

//如果要求展示的数据是来源于数据库多张表 按照上面的规则就实现不了

这种情况—》创建一个辅助实体类 在原来类的基础之上再添加需要的属性

方法2:直接在该类中再添加一个属性与查询的列对对应

好处在于:一行记录对应该类的一个对象

          多行记录对应该类的一个集合

实体类一般会创建一个包 名字为 com.xx.pojo

public class Subject {

 

    private int subjectid;

    private String subjectname;

    private int classhour;

    private int gradeid;

 

    public int getSubjectid() {

       return subjectid;

    }

 

    public void setSubjectid(int subjectid) {

       this.subjectid = subjectid;

    }

 

    public String getSubjectname() {

       return subjectname;

    }

 

    public void setSubjectname(String subjectname) {

       this.subjectname = subjectname;

    }

 

    public int getClasshour() {

       return classhour;

    }

 

    public void setClasshour(int classhour) {

       this.classhour = classhour;

    }

 

    public int getGradeid() {

       return gradeid;

    }

 

    public void setGradeid(int gradeid) {

       this.gradeid = gradeid;

    }

 

    @Override

    public String toString() {

       return "Subject [subjectid=" + subjectid + ", subjectname=" + subjectname + ", classhour=" + classhour

              + ", gradeid=" + gradeid + "]";

    }

 

}

 

public static void main(String[] args) {

       // add_subject("dba", 12, 4);

       //deletebyid("16");

       //update_subject("啊啊啊啊", 15, 44, 2);

       List<Subject> subjects=querySubjectAll();

       System.out.println("科目id\t科目名称\t课时\t年级id");

       for (Subject subject : subjects) {

           System.out.println(subject);

       }

      

    }

   

    /**

     * 查询全部科目

     * @return

     */

    public static List<Subject> querySubjectAll() {

       List<Subject> subjects=new ArrayList<Subject>();

       String sql="SELECT  * from  `subject` ";

       PreparedStatement ps=null;

       ResultSet rSet=null;//用来接收查询数据的结果集

      

        try {

           ps=connection.prepareStatement(sql);

       rSet=ps.executeQuery();

       //next() 判断下一行是否有数据 true  false

       while (rSet.next()) {

           //创建Subject对象  用来接收每一行数据

           Subject subject=new Subject();//别写在循环外面了.....

           int id=rSet.getInt(1);//填写列的索引

           subject.setSubjectid(id);

           subject.setSubjectname(rSet.getString("subjectname"));//填写获取数据的列名

           subject.setClasshour(rSet.getInt(3));

           subject.setGradeid(rSet.getInt(4));

           //将该行对应的对象添加到集合

           subjects.add(subject);

       }

       } catch (SQLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

 

       return subjects;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值