dljd_(007_008)_jdbc执行DQL/DML/DDL语句

Posted 1024军团

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dljd_(007_008)_jdbc执行DQL/DML/DDL语句相关的知识,希望对你有一定的参考价值。

一、使用JDBC执行DQL/DML/DDL语句示例

  1.1数据库设计

  

create database jdbc;
use jdbc;

create table test(
id int primary key auto_increment,
name varchar(10)
);

insert into test values(1,"name1");
insert into test values(2,"name2");
insert into test values(3,"name3");
insert into test values(4,"name4");
insert into test values(5,"name5");

  1.2代码实现

  

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;

/**
 * [说明]:测试jdbc
 * @author aeon(qq:1584875179)
 *
 */

public class Test {
    /**
     * jdbc执行DQL语句
     */
    public static void testDQL(){
        Connection connection=null;
        Statement statement=null;
        ResultSet resultSet=null;
        try {
            Driver driver=new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(driver);
            String url="jdbc:mysql://localhost:3306/jdbc";
            String username="root";
            String password="root";
            connection=DriverManager.getConnection(url, username, password);
            statement=connection.createStatement();
            String dql_sql="select * from test;";
            resultSet=statement.executeQuery(dql_sql);
            System.out.println("序号\\t名    称");
            while(resultSet.next()){
                int id=resultSet.getInt("id");
                String name=resultSet.getString("name");
                System.out.println(id+"\\t"+name);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if(null!=resultSet){
                    resultSet.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if(null!=statement){
                    statement.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if(null!=connection){
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
    }
    
    /**
     * jdbc执行DML语句
     */
    public static void testDML(){
        Connection connection=null;
        Statement statement=null;
        try {
            Driver driver=new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(driver);
            String url="jdbc:mysql://localhost:3306/jdbc";
            String username="root";
            String password="root";
            connection=DriverManager.getConnection(url, username, password);
            statement=connection.createStatement();
            String dml_sql="insert into test(name) values(\'name6\')";
            int num=statement.executeUpdate(dml_sql);
            System.out.println("受影响的行数为:"+num);
            
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if(null!=statement){
                    statement.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if(null!=connection){
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
    }

    /**
     * jdbc执行DDL语句
     */
    public static void testDDL(){
        Connection connection=null;
        Statement statement=null;
        try {
            Driver driver=new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(driver);
            String url="jdbc:mysql://localhost:3306/jdbc";
            String username="root";
            String password="root";
            connection=DriverManager.getConnection(url, username, password);
            statement=connection.createStatement();
            String ddl_sql="create table users(id int(4) primary key auto_increment,name varchar(10),password varchar(16));";
            int num=statement.executeUpdate(ddl_sql);
            System.out.println("受影响的行数为:"+num);
            
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if(null!=statement){
                    statement.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if(null!=connection){
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
    }
    /**
     * jdbc使用excute方法同时可以执行DQL/DML/DDL语句
     */
    public static void testDQLDMLDDL(){
        Connection connection=null;
        Statement statement=null;
        ResultSet resultSet=null;
        try {
            Driver driver=new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(driver);
            String url="jdbc:mysql://localhost:3306/jdbc";
            String username="root";
            String password="root";
            connection=DriverManager.getConnection(url, username, password);
            statement=connection.createStatement();
            String sql="insert into test(name) values(\'name6\')";
            if(statement.execute(sql)){//如果返回true则表示执行的是DQL,有结果集返回,如果为false则表示返回的是更新计数器
                resultSet=statement.getResultSet();
                System.out.println("序号\\t名    称");
                while(resultSet.next()){
                    int id=resultSet.getInt("id");
                    String name=resultSet.getString("name");
                    System.out.println(id+"\\t"+name);
                }
            }else{//如果为false则表示返回的是更新计数器
                int num =statement.getUpdateCount();
                System.out.println("更新了"+num+"条数据!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if(null!=statement){
                    statement.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if(null!=connection){
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
    }
    
    public static void main(String[] args) {
        //testDQL();
        //testDML();
        //testDDL();
        testDQLDMLDDL();
    }

}

 测试正常通过!

二、注册驱动的方式

  

   

 

以上是关于dljd_(007_008)_jdbc执行DQL/DML/DDL语句的主要内容,如果未能解决你的问题,请参考以下文章

dljd_(008-010)hibernate_第一个程序

dljd_017_使用PreparedStatement执行模糊查询

dljd_(018-020)_jdbc中mysql的事务管理

dljd_011_jdbc再次封装工具类_把数据库的相关信息写到配置文件中,减低代码的耦合度

dljd_027_增改删在同一个事务中的默认执行顺序

dljd_(021-025)_事务及_CRUD