JDBC

JDBC(数据库厂商提供的能够对自己数据进行操作的驱动包)

  • java的数据获取方式:
    1 直接声明变量并赋值.
    2 Scanner类控制台输入
    3 IO流(将硬盘存储中的数据读取到java中)
    4 scoket+io
    5 从数据库中获取

  • 解决的问题:
    java和数据库间的沟通不一致

  • 使用:
    创建类实现接口(操作数据库)
    数据库厂商对外提供数据库操作的驱动包

  • 使用jdbc进行数据查询:
    声明ArrayList集合
    加载驱动
    创建连接对象
    创建sql命令对象
    创建sql命令
    执行sql命令
    遍历查询结果,并将结果存储到ArrayList中
    关闭资源

public class TestSelect {
       public static void main(String[] args) throws ClassNotFoundException, SQLException {
               //声明List集合
               ArrayList<Student> list=new ArrayList<>();
               //加载驱动
                       Class.forName("oracle.jdbc.driver.OracleDriver");
               //创建连接对象
                       Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","oracle");
               //创建sql命令对象
                       Statement stmt=conn.createStatement();
               //创建Sql命令
                       String sql="select * from student";
               //执行Sql命令
                        ResultSet rs = stmt.executeQuery(sql);
                        while(rs.next()){
                                //创建学生对象
                                Student stu=new Student();
                                stu.setSnum(rs.getInt("snum"));
                                stu.setSname(rs.getString("sname"));
                                stu.setSage(rs.getInt("sage"));
                                stu.setMoney(rs.getDouble("money"));
                                //将对象存储到ArrayList中
                                list.add(stu);
                        }
               
               System.out.println(list.get(2));
               //创建DaoImpl层对象
               StudentDaoImpl sd=new StudentDaoImpl();
               ArrayList<Student> ls=sd.getStudentInfo();
       }
}

  • 使用jdbc进行数据增加:
    1 导入jar包:
    导入ojdbc6.jar,在项目上右键 builder path–>add to builder path.
    2 加载驱动
    Class.forName(“oracle.jdbc.driver.OracleDriver”);
    作用:初始化加载jdbc类到java虚拟机.
    注意:
    ojdbc6.jar使用此包该句可以省略不写.
    3 获取数据库连接对象
    Connection conn =DriverMananger.getConnection(“url”,“username”,“password”);
    参数含义:
    url:表示要连接的数据地址
    username:数据库的用户名
    password:数据库的密码
    作用:
    连接到指定的数据库并返回连接对象.
    4 创建sql命令对象
    Statement stmt=conn.createStatement();
    作用:
    编译,发送SQL命令
    5 创建sql命令
    String sql=“insert into dept values(92,’’,’’)”;
    6 执行sql命令:
    新增sql命令:
    int i=stmt.executeUpdate(sql);
    返回值:
    返回值如果小于0,表示未执行成功
    返回值如果大于0,表示成功修改的数据量.
    7 关闭资源
 public class TestInsert1 {
       public static void main(String[] args) throws ClassNotFoundException, SQLException {
               //1 加载驱动类
               //Class.forName("oracle.jdbc.driver.OracleDriver");
               //2 获取数据库连接对象(连接指定的数据库)
               Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","oracle");
               //3 获取sql命令对象(编译和发送sql命令给数据库)
               Statement stmt=conn.createStatement();
               //4 创建sql命令
               String sql="insert into dept values(92,'吃鸡学院','北京')";
               //5 指定sql命令
               int i=stmt.executeUpdate(sql);
               System.out.println("执行结果:"+i);
               //6 关闭资源
                       stmt.close();
                       conn.close();
       }
}
  • 使用jdbc进行数据删除:
    加载jar包
    加载驱动
    创建连接对象
    创建sql命令对象
    创建sql命令(删除)
    执行sql命令
    关闭资源
 public class TestDel {
       public static void main(String[] args) throws ClassNotFoundException, SQLException {
               //1 加载驱动
                       Class.forName("oracle.jdbc.driver.OracleDriver");
               //2创建连接对象
                       Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@LocalHost:1521:orcl", "scott", "oracle");
               //3创建sql命令对象
                       Statement stmt=conn.createStatement();
               //4创建sql命令
                       String sql="delete from student where snum='2'";
               //5执行sql命令
                       int i=stmt.executeUpdate(sql);
                       System.out.println("删除数据量:"+i);
               //6关闭资源
                       stmt.close();
                       conn.close();
       }
}
  • 使用jdbc进行数据修改:
    导入jar包
    加载驱动
    创建连接对象
    创建sql命名对象
    创建sql命令
    执行sql命令
    关闭资源
public class TestUpdate {
       public static void main(String[] args) throws ClassNotFoundException, SQLException {
               //1加载驱动
               Class.forName("oracle.jdbc.driver.OracleDriver");
               //2创建连接对象
               Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott","oracle");
               //3创建sql命令对象
               Statement stmt=conn.createStatement();
               //4创建sql命令
               String sname="张三三";
               String sql="update student set sname='"+sname+"' where snum=2";
               //5执行sql命令
               int i=stmt.executeUpdate(sql);
               System.out.println(i);
               //6关闭资源
               stmt.close();
               conn.close();
               
       }
}
               

  • jdbc完整代码:
public class TestInsert2 {
       public static void main(String[] args){
               //声明jdbc变量
               Connection conn=null;
               Statement stmt=null;
               //声明JDBC参数
                       String driver="oracle.jdbc.driver.OracleDriver";
                       String url="jdbc:oracle:thin:@localhost:1521:orcl";
                       String username="scott";
                       String password="oracle";
               //1 加载驱动类
               try {
                       Class.forName(driver);
                       //2 获取数据库连接对象(连接指定的数据库)
                       conn=DriverManager.getConnection(url,username,password);
                       //3 获取sql命令对象(编译和发送sql命令给数据库)
                       stmt=conn.createStatement();
                       //4 创建sql命令
                       String sql="insert into dept values(97,'吃鸡学院','北京')";
                       //5 指定sql命令
                       int i=stmt.executeUpdate(sql);
                       System.out.println("执行结果:"+i);
                       
               } catch (ClassNotFoundException e) {
                       // TODO Auto-generated catch block
                       e.printStackTrace();
               } catch (SQLException e) {
                       // TODO Auto-generated catch block
                       e.printStackTrace();
               }finally{
                       //6 关闭资源
                       try {
                               stmt.close();
                       } catch (SQLException e) {
                               // TODO Auto-generated catch block
                               e.printStackTrace();
                       }
                       try {
                               conn.close();
                       } catch (SQLException e) {
                               // TODO Auto-generated catch block
                               e.printStackTrace();
                       }
               }
               
       }
}        
  • jdbc常见错误:
    ClassNotFoundException:驱动类未找到.
    java.sql.SQLException: No suitable driver found for :thin:@localhost:1521:orcl:URL错误
    java.sql.SQLException: ORA-01017: invalid username/password; logon denied:用户名或密码错误
    java.sql.SQLSyntaxErrorException: ORA-00900: 无效 SQL 语句:Sql语句错误
    java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (SCOTT.PK_DEPT):主键冲突
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值