zoukankan      html  css  js  c++  java
  • dljd_008_jdbc中调用Statement的execute()执行DQL,DDL,DML

    一、statement.execute()方法既能执行DQL也能执行DDL和DML、如何判断执行的是那种类型的语句、然后做相应的处理呢?

      判断的伪代码如下:

    if(statement.execute(sql)){//如果为true、则执行的是DQL语句
            //循环遍历结果  
    }else{ //否则执行的是DML和DDL
           //some code
    }

      具体示例:

      

    package edu.aeon.jdbc;
    
    import java.sql.Connection;
    import java.sql.Driver;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    /**
     * [说明]:使用statement的execute执行DQL(查询)、DML(增删改)及DDL(创建)
     * @author aeon
     */
    public class TestStatment {
    
        public static void main(String[] args) {
            Connection connection=null;
            Statement statement=null;
            ResultSet resultSet=null;
            try {
                //2.1加载/注册驱动
                //driver是jdbc声明的标准接口、com.mysql.jdbc.Driver是mysql数据库厂商根据这个标准做的实现、注意这两个Driver是有区别的。
                Driver driver=new com.mysql.jdbc.Driver(); //接口声明引用指向实现类的对象
                DriverManager.registerDriver(driver);
                //2.2获取和数据库服务器的连接(java程序是客户端    mysql是个服务器)
                String username="root"; //用户名
                String password="root";    //密码
                //url中的jdbc:mysql说明:jdbc是由sun公司制定的一套网络协议  jdbc:mysql是指jdbc协议下的mysql子协议。
                String url="jdbc:mysql://localhost:3306/db_test";
                //2.3连接服务器     Connection是jdbc规范中声明的接口
                connection=DriverManager.getConnection(url, username, password);
                //2.4通过连接对象获取执行sql语句的对象
                statement=connection.createStatement();
                String sql="select * from user";
                //String sql="insert into user(userid,username,userpw)values(10007,'张三','张三')";
                //String sql="create table test1(id int primary key,name varchar(10))";//简单的DDL测试语句
                //statement.execute(sql)结果为true时、表示这个sql语句为DQL语句、否则为DML/DDL
                if(statement.execute(sql)){ //如果是DQL、则接受结果集并循环输出结果
                    resultSet=statement.getResultSet();
                    System.out.println("用户id	用户名	用户密码");
                    while(resultSet.next()){//初始时指向表前面、和游标相似 .next()方法表示移动到下一条记录并判断有没有数据。如果有则结果为true。否则false
                        //resultSet.getString(1);//根据记录下标来获取该下标所对应的字段值、不推荐
                        int userId=resultSet.getInt("userId");//根据表字段名获取该行记录上的字段名所对应的字段值
                        String userName=resultSet.getString("userName");
                        String userPw=resultSet.getString("userpw");//数据库中的字段不区分大小写
                        System.out.println(userId+"	"+userName+"	"+userPw);
                    }
                }else{//DML和DDL
                    int count=statement.getUpdateCount();//返回更新计数器或者0
                    System.out.println(count+"行已更新!");
                }
                
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                if(null!=statement){
                    try {
                        statement.close();
                    } catch (SQLException e) {
                        System.out.println("关闭流失败!--->statement");
                        e.printStackTrace();
                    }
                }
                if(null!=connection){
                    try {
                        connection.close();
                    } catch (SQLException e) {
                        System.out.println("关闭流失败!--->connection");
                        e.printStackTrace();
                    }
                }
            }
        }
    
    }

    当执行sql语句为:select * from user时、执行结果截图:

     

    当执行的sql语句为:insert into user(userid,username,userpw)values(10007,'张三','张三')时、执行结果截图:

      

    当执行的sql语句为:create table test1(id int primary key,name varchar(10))时,执行结果截图:

      

    数据库中的结果截图:

      

      

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    hdu2328 Corporate Identity
    hdu1238 Substrings
    hdu4300 Clairewd’s message
    hdu3336 Count the string
    hdu2597 Simpsons’ Hidden Talents
    poj3080 Blue Jeans
    poj2752 Seek the Name, Seek the Fame
    poj2406 Power Strings
    hust1010 The Minimum Length
    hdu1358 Period
  • 原文地址:https://www.cnblogs.com/aeon/p/10068876.html
Copyright © 2011-2022 走看看