当前位置:Gxlcms > 数据库问题 > Jdbc语法

Jdbc语法

时间:2021-07-01 10:21:17 帮助过:11人阅读

导包,每种数据库的包都不一样,放在项目下,然后Build Path public static void main(String[] args) { //连接数据库, 得到Connection对象 Connection conn = null; Statement stmt = null; try { //1.加载驱动类 Driver 对象, 反射: Class.forName(包名.类名); Class.forName("oracle.jdbc.driver.OracleDriver"); //2.通过DriverManager(驱动管理器)的getConnection() 得到Connection对象 conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger"); //3.通过Connection对象, 创建Statment对象 stmt = conn.createStatement(); //4.通过statement对象,发送sql语句,通过数据库执行之 //删除一条语句 String sql1 = "DELETE FROM empcopy WHERE empno = ‘7369‘"; //修改一条语句 String sql2 = "UPDATE empcopy SET sal = 6666 WHERE empno = ‘7788‘"; //添加一条语句 String sql3 = "INSERT INTO empcopy VALUES(‘4567‘,‘huhu‘,‘MANAGER‘,‘7839‘,
                  to_date(‘1998-12-21‘,‘yyyy-mm-dd‘),‘800‘,null,‘30‘)"; int rs = stmt.executeUpdate(sql3); if(rs != 0){ System.out.println("执行了"+rs+"条sql语句"); }else{ System.out.println("未执行sql语句"); }; } catch (ClassNotFoundException e) { //如果抛这个类找不到异常, 原因: 1) 数据库驱动jar没导入 2) 包名.类名写错 e.printStackTrace(); } catch (SQLException e) { //如果抛出SQLException异常: 原因: 1) 三大参数写错 2) 数据库服务没有启动 e.printStackTrace(); }finally{ //5.关闭资源 推荐倒序关闭 try { if(stmt != null){stmt.close();} if(conn != null){conn.close();} } catch (SQLException e) { e.printStackTrace(); } } }

查询(Query):

            //通过connection对象创建statement对象
            stmt = conn.createStatement();
            String sql = "select * from emp";
            //通过statement对象执行executeQuery查
            rs = stmt.executeQuery(sql);
            //循环使“行光标”移动到下一行,并返回移动后的行是否存在;
            while(rs.next()){
                //打印每一行的相应数据类型的数据
    //也可以通过rs.getString()或者rs.getObject(),推荐使用数据库中对应的数据类型
                System.out.println(rs.getInt("empno")
                                +","+rs.getString("ename")
                                +","+rs.getString("job")
                                +","+rs.getInt("mgr")
                                +","+rs.getDate("hiredate")
                                +","+rs.getInt("sal")
                                +","+rs.getInt("comm")
                                +","+rs.getInt("deptno")
                                );
            }

Statement存在sql注入(sql攻击)安全问题,不推荐使用

这行当前会使我们登录成功!因为是输入的用户名和密码是SQL语句片段,最终与我们的login()方法中的SQL语句组合在一起!我们来看看组合在一起的SQL语句:
SELECT * FROM tab_user WHERE username=a or 1=1 and password=a or 1=1

推荐使用:PreparedStatement 预编译声明 

     Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            //1.通过反射的获取Driver
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //2.通过获取DriverManager.getConnection得到connection对象
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
            //3.使用connection返回prepareStatement对象
            String sql = "SELECT COUNT(1) FROM EMP WHERE SAL > ?";
            pstmt = conn.prepareStatement(sql);
            //给?赋值,从1开始
            pstmt.setInt(1, 1000);
            rs = pstmt.executeQuery();
            while(rs.next()){
                System.out.println(rs.getInt(1));
            }

 

Jdbc语法

标签:原来   使用   close   预编译   说明   password   启动   关闭   null   

人气教程排行