精华内容
下载资源
问答
  • -- *****************************************************************************************************************************************-- 三个表ROLE、USERGROUP_ROLE、OLTPROLE,这三个表关系...
    -- *****************************************************************************************************************************************
    --
     三个表ROLE、USERGROUP_ROLE、OLTPROLE,这三个表的关系如下:
    --
     ROLE(ID)
    --
     USERGROUP_ROLE(GROUPID    ROLEID)
    --
     OLTPROLE(ROLEID)
    --
     ROLE表与OLTPROLE表通过USERGROUP_ROLE表实现外键关联,并且有外键约束。
    --
     ****************************************************************************************************************************************
    --
    ===ROLE表
    SELECT * FROM ROLE;
    --东莞信息
    SELECT * FROM ROLE
    WHERE INFORMATION LIKE '14419%'
    OR NAME LIKE 'FBI%';
    --非东莞信息
    SELECT * FROM ROLE
    WHERE INFORMATION NOT LIKE '14419%'
    AND NAME NOT LIKE 'FBI%';
    --删除非东莞信息
    DELETE FROM ROLE
    WHERE INFORMATION NOT LIKE '14419%'
    AND NAME NOT LIKE 'FBI%';

    --===USERGROUP_ROLE表
    SELECT * FROM USERGROUP_ROLE;
    --非东莞信息。查找存在USERGROUP_ROLE表中的在ROLE表没有记录的记录。
    SELECT * FROM USERGROUP_ROLE
    WHERE ROLEID NOT IN
          (
    SELECT ID FROM ROLE
          
    WHERE INFORMATION LIKE '14419%'
          
    OR NAME LIKE 'FBI%');
    --删除非东莞信息。
    DELETE FROM USERGROUP_ROLE
    WHERE ROLEID NOT IN
          (
    SELECT ID FROM ROLE
          
    WHERE INFORMATION LIKE '%14419%'
          
    OR NAME LIKE 'FBI%');

    --===OLTPROLE表
    SELECT * FROM OLTPROLE;
    --删除非东莞、非管理员信息
    DELETE FROM OLTPROLE WHERE ROLEID <> '5';
     
    展开全文
  • 可滚动的结果集。 如果想创建可滚动的结果集,则在创建PrepareStatement时候必须指定创建的类型。 CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) ...

    JDBC对ResultSet的支持

    JDBC最重要的概念是批处理,可以一次完成多个语句的执行。

    可滚动的结果集。

    如果想创建可滚动的结果集,则在创建PrepareStatement时候必须指定创建的类型。

     CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) 
              创建一个 CallableStatement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象。 

    使得ResultSet结果集可滚动,设置参数resultSetType

    ResultSet.TYPE_SCROLL_SENSITIVE

    设置结果集只读:设置参数:resultSetConcurrency

    ResultSet.CONCUR_READ_ONLY

    ResultSet中有以下方法:

    1,定位第几条数据:

     boolean absolute(int row) 
              将光标移动到此 ResultSet 对象的给定行编号。 

    2,将光标移到末尾

     void afterLast() 
              将光标移动到此 ResultSet 对象的末尾,正好位于最后一行之后。 

    3,将光标移到开头

    void beforeFirst() 
              将光标移动到此 ResultSet 对象的开头,正好位于第一行之前。 

    4,将光标移到第一行

     boolean first() 
              将光标移动到此 ResultSet 对象的第一行。 

    5,光标先前移

     boolean next() 
              将光标从当前位置向前移一行。 

    6,光标移到上一行

     boolean previous() 
              将光标移动到此 ResultSet 对象的上一行。 

    7,定位最后一行

     boolean last() 
              将光标移动到此 ResultSet 对象的最后一行。 

     

    代码实例:

    package 类集;
    import java.sql.Connection ;
    import java.sql.DriverManager ;
    import java.sql.SQLException ;
    import java.sql.PreparedStatement ;
    import java.sql.ResultSet ;
    public class JDBC20ReadDemo{
        // 定义MySQL的数据库驱动程序
        public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
        // 定义MySQL数据库的连接地址
        public static final String DBURL = "jdbc:mysql://localhost:3306/sys" ;
        // MySQL数据库的连接用户名
        public static final String DBUSER = "root" ;
        // MySQL数据库的连接密码
        public static final String DBPASS = "aaaaaa" ;
        public static void main(String args[]) throws Exception{    // 所有异常抛出
            Connection conn = null ;        // 数据库连接
            PreparedStatement pstmt = null ;
            ResultSet rs = null ;
            String sql = "SELECT name,age,birthday FROM user" ;// 此处不需要设置任何的内容
            Class.forName(DBDRIVER) ;    // 加载驱动程序
            conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
            pstmt = conn.prepareStatement(sql,
                ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_READ_ONLY) ;
            rs = pstmt.executeQuery() ;    // 查询操作
            System.out.println("第2条数据:") ;
            rs.absolute(1) ;    // 第二条数据,定位第二条数据
            print(rs,1) ;
            System.out.println("第1条数据:") ;
            rs.beforeFirst() ;
            print(rs,1) ;
            System.out.println("第4条数据:") ;
            rs.afterLast() ;// 最后一条数据之后
            print(rs,-1) ;
            rs.close() ;
            pstmt.close() ;
            conn.close() ;            // 数据库关闭
        }
        public static void print(ResultSet rs,int re) throws Exception{
            if(re>0){
                rs.next() ;        // 由前向后
            }else{
                rs.previous() ;    // 由后向前
            }
            String name = rs.getString(1) ;
            int age = rs.getInt(2) ;
            java.util.Date d = rs.getDate(3) ;
            System.out.print("姓名:" + name + ";") ;
            System.out.print("年龄:" + age + ";") ;
            System.out.println("生日:" + d + ";") ;
            System.out.println("----------------------------") ;
        }
    };

     输出结果:

    Wed Apr 19 22:33:46 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    第2条数据:
    姓名:小红;年龄:20;生日:2007-08-27----------------------------
    第1条数据:
    姓名:李兴华;年龄:30;生日:2007-08-27----------------------------
    第4条数据:
    姓名:小红;年龄:20;生日:2007-08-27----------------------------

     

    如果程序这样开发,内存损耗会非常大,一般情况下,开发中是不会使用这种可滚动的结果集的。

     

    使用结果集插入数据

    要想使用resultSet插入数据,则在创建数据库操作的时候必须选择好允许更新

    在ResultSet接口中可以看到如下字段,要插入数据,必须允许更新,选择:CONCUR_UPDATABLE

     

    设计到的方法:

    1,将光标移到到插入行

     void moveToInsertRow() 
              将光标移动到插入行。 

    2,更新指定String类型的列

     void updateString(String columnLabel, String x) 
              用 String 值更新指定列。 

    3,提交插入数据更新

     void insertRow() 
              将插入行的内容插入到此 ResultSet 对象和数据库中。 

     

    代码实例:

    package 类集;
    import java.sql.Connection ;
    import java.sql.DriverManager ;
    import java.sql.PreparedStatement ;
    import java.sql.ResultSet ;
    public class JDBC20InsertDemo{
        // 定义MySQL的数据库驱动程序
        public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
        // 定义MySQL数据库的连接地址
        public static final String DBURL = "jdbc:mysql://localhost:3306/sys" ;
        // MySQL数据库的连接用户名
        public static final String DBUSER = "root" ;
        // MySQL数据库的连接密码
        public static final String DBPASS = "aaaaaa" ;
        public static void main(String args[]) throws Exception{    // 所有异常抛出
            Connection conn = null ;        // 数据库连接
            PreparedStatement pstmt = null ;
            ResultSet rs = null ;
            String sql = "SELECT name,age,birthday FROM user" ;// 此处不需要设置任何的内容
            Class.forName(DBDRIVER) ;    // 加载驱动程序
            conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
            pstmt = conn.prepareStatement(sql,
                ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE) ;    // 表示结果集可以更新
            rs = pstmt.executeQuery() ;    // 查询操作
            rs.moveToInsertRow() ;    // 移动到插入的一行
            rs.updateString("name","李华") ;    // 设置姓名
            rs.updateInt("age",33) ;    // 设置要插入的年龄
            rs.updateDate("birthday",new java.sql.Date(new java.util.Date().getTime()));
            rs.insertRow() ;    // 真正提交数据
            rs.close() ;
            pstmt.close() ;
            conn.close() ;            // 数据库关闭
        }
    };

    查询结果:

     

    使用结果集更新数据

    如果要想使用结果集更新数据,则首先应该按主键查询

    涉及的方法:

    1,取消更新:

     void cancelRowUpdates() 
              取消对 ResultSet 对象中的当前行所作的更新。 

    2,更新操作

     void updateRow() 
              用此 ResultSet 对象的当前行的新内容更新底层数据库。 

     

    代码实例:

    package 类集;
    import java.sql.Connection ;
    import java.sql.DriverManager ;
    import java.sql.SQLException ;
    import java.sql.PreparedStatement ;
    import java.sql.ResultSet ;
    public class JDBC20UpdateDemo{
        // 定义MySQL的数据库驱动程序
        public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
        // 定义MySQL数据库的连接地址
        public static final String DBURL = "jdbc:mysql://localhost:3306/sys" ;
        // MySQL数据库的连接用户名
        public static final String DBUSER = "root" ;
        // MySQL数据库的连接密码
        public static final String DBPASS = "aaaaaa" ;
        public static void main(String args[]) throws Exception{    // 所有异常抛出
            Connection conn = null ;        // 数据库连接
            PreparedStatement pstmt = null ;
            ResultSet rs = null ;
            String sql = "SELECT name,age,birthday FROM user WHERE age=?" ;// 此处不需要设置任何的内容
            Class.forName(DBDRIVER) ;    // 加载驱动程序
            conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
            pstmt = conn.prepareStatement(sql,
                ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE) ;    // 表示结果集可以更新
            pstmt.setInt(1,20) ;
            rs = pstmt.executeQuery() ;    // 查询操作
            rs.last() ;    // 到最后一行
    
            rs.updateString("name","李藏") ;    // 设置姓名
            rs.updateDate("birthday",new java.sql.Date(new java.util.Date().getTime()));
          //rs.cancelRowUpdates() ;    // 取消更新,这里暂时注释掉,否则更新不了
            rs.updateRow() ;    // 真正提交数据
            rs.close() ;
            pstmt.close() ;
            conn.close() ;            // 数据库关闭
        }
    };

    查询结果:

     

    使用结果集删除数据

    涉及方法:

    1,删除当前行

     void deleteRow() 
              从此 ResultSet 对象和底层数据库中删除当前行。 

    代码实例:

    package 类集;
    import java.sql.Connection ;
    import java.sql.DriverManager ;
    import java.sql.SQLException ;
    import java.sql.PreparedStatement ;
    import java.sql.ResultSet ;
    public class JDBC20DeleteDemo{
        // 定义MySQL的数据库驱动程序
        public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
        // 定义MySQL数据库的连接地址
        public static final String DBURL = "jdbc:mysql://localhost:3306/sys" ;
        // MySQL数据库的连接用户名
        public static final String DBUSER = "root" ;
        // MySQL数据库的连接密码
        public static final String DBPASS = "aaaaaa" ;
        public static void main(String args[]) throws Exception{    // 所有异常抛出
            Connection conn = null ;        // 数据库连接
            PreparedStatement pstmt = null ;
            ResultSet rs = null ;
            String sql = "SELECT name,age,birthday FROM user WHERE age=?" ;// 此处不需要设置任何的内容
            Class.forName(DBDRIVER) ;    // 加载驱动程序
            conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
            pstmt = conn.prepareStatement(sql,
                ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE) ;    // 表示结果集可以更新
            pstmt.setInt(1,20) ;
            rs = pstmt.executeQuery() ;    // 查询操作
            rs.last() ;    // 到最后一行
        rs.deleteRow() ;    // 真正提交删除数据
            rs.close() ;
            pstmt.close() ;
            conn.close() ;            // 数据库关闭
        }
    };

    查询结果:

     

    但是,以上操作,在正常情况下是不会使用的,不如直接使用PreparedStatement完成方便。

    批处理

    批处理指一次性向数据库中执行多条语句,一次提交。

    批处理需要用到PreparedStatement接口中的方法:

    1,addBatch():将一组参数加入到PreparedStatement对象批处理命令中。

     void addBatch() 
              将一组参数添加到此 PreparedStatement 对象的批处理命令中。 

    Statement接口中的方法:

     2,executeBatch():执行批处理语句,返回更新的行数。

    int[] executeBatch() 
              将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。 

     

    代码实例:

    package 类集;
    import java.sql.Connection ;
    import java.sql.DriverManager ;
    import java.sql.SQLException ;
    import java.sql.PreparedStatement ;
    public class JDBC20BatchDemo{
        // 定义MySQL的数据库驱动程序
        public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
        // 定义MySQL数据库的连接地址
        public static final String DBURL = "jdbc:mysql://localhost:3306/sys" ;
        // MySQL数据库的连接用户名
        public static final String DBUSER = "root" ;
        // MySQL数据库的连接密码
        public static final String DBPASS = "aaaaaa" ;
        public static void main(String args[]) throws Exception{    // 所有异常抛出
            Connection conn = null ;        // 数据库连接
            PreparedStatement pstmt = null ;
            String sql = "INSERT INTO user(name,age,birthday) VALUES (?,?,?)" ;// 此处不需要设置任何的内容
            Class.forName(DBDRIVER) ;    // 加载驱动程序
            conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
            pstmt = conn.prepareStatement(sql) ;    // 表示结果集可以更新
            for(int i=0;i<10;i++){
                pstmt.setString(1,"李兴华 - " + i) ;
                pstmt.setInt(2,20 + i) ;
                pstmt.setDate(3,new java.sql.Date(new java.util.Date().getTime())) ;
                pstmt.addBatch() ;    // 加入批处理,等待执行
            }
            int temp[] = pstmt.executeBatch() ;
            System.out.println("更新了" + temp.length + "条数据。") ;
            pstmt.close() ;
            conn.close() ;            // 数据库关闭
        }
    };

    操作结果:

    Wed Apr 19 23:56:10 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    更新了10条数据。

    查询结果:

    展开全文
  • 首先要分析出现重复记录原因,是不是有一些where条件没有加上,把该加条件都加上如果还有结果集重复,考虑以下方法去重: 结果集中去除重复行可以使用函数【distinct】也可以使用分组语句【group by】 1、【distinct...

    首先要分析出现重复记录的原因,是不是有一些where条件没有加上,把该加的条件都加上如果还有结果集重复,考虑以下方法去重:

    结果集中去除重复行可以使用函数【distinct】也可以使用分组语句【group by】

    1、【distinct】使用示例:

    1
    select distinct userid,username from 表名

    2、分组语句【group by】使用示例:

    1
    select userid,username from 表名 group by userid,username

     

    1和2两个语句的select检索输出结果是一致的

    展开全文
  • 我试图使用JDBC从java中删除表中数据.首先,我计算行数,确保表不为空,然后截断数据.这是我正在使用代码Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");Connection con = DriverManager.get...

    我试图使用JDBC从

    java中删除表中的数据.首先,我计算行数,确保表不为空,然后截断数据.

    这是我正在使用的代码

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    Connection con = DriverManager.getConnection("jdbc:sqlserver://m-i:1433;databaseName=Tes", "sa", "Password");

    Statement cnnt= con.createStatement();

    Statement del1 = con.createStatement();

    ResultSet rs = cnnt.executeQuery("Select count(lea) AS cnt from dbo.Link");

    int count= 0;

    if(rs.next())

    {

    count = rs.getInt("cnt");

    }

    System.out.println(count);

    if(count != 0)

    {

    del1.executeQuery("Truncate Table dbo.Link");

    }

    else

    {

    System.out.println("Table is already empty");

    }

    错误:

    Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set.

    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)

    at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:800)

    at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689)

    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)

    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)

    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)

    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:616)

    错误发生在截断表dbo.Link上.

    我这样做是对的吗?

    请有人帮我这个.

    谢谢.

    展开全文
  • 分享给大家供大家参考,具体如下:可以一次性执行多个操作或取回多个结果集。实例:$mysqli = new mysqli("localhost", "root", "111111", "test");/* check connection */if (mysqli_connect_errno()) {printf(...
  • 删除重复记录的SQL语句 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复...就可以得到无重复记录的结果集。 如果该表需要删除重复的记录...
  • SELECT concat('DROP TABLE IF EXISTS ', table_name, ';...mydb换成你想删除的数据库名字这样可以生成一个批量处理sql语句,你需要再运行一次这个结果集就可以删除所有表而不删除数据库了 转载于:...
  • 原文地址为:删除重复记录的SQL...1、对于第一种重复,比较容易解决,使用select distinct * from tableName就可以得到无重复记录的结果集。如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除sele...
  • 二、sq199中的表连接 内连接:  select字段  from表1 [inner]join 表2  on连接条件;... 左外连接:内连接的结果集+左表匹配不上的记录 select 字段  from表1 left [outer] join 表2  
  • 注意:此文章仅罗列部分指令及sql语句,并且某些语句并不完整与严谨,仅供参考以及示例所用,详细内容可以查阅官方文档。1.创建test数据库create database test;2.删除数据库drop database test;3.选择数据库use ...
  • 1、对于第一种重复,比较容易解决,使用 select distinct * from tableName 就可以得到无重复记录的结果集。 如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除 代码如下: select distinct * ...
  • 删除步骤用于在将从JDBC连接中执行一行DELETE语句,从而在数据源中删除数据。可以选择要与上一步骤中传入字段值进行比较字段,当满足比较要求时,再删除数据。如果多行匹配,则具有满足条件所有行都将从数据源...
  • 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的...就可以得到无重复记录的结果集。 如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除 复制
  • 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段...就可以得到无重复记录的结果集。 如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除 select disti
  • 错误:delete from table1 a WHERE a.table2_id in( ...执行以上语句总是报错,原因是mysql在删除的时候,不支持别名定义,把别名去掉即可正常执行。 正确:delete from table1 WHERE table2_id in( select 
  • 如图 ![图片说明]... 怎么样能将SQL语句查询后的结果再次执行呢?我要删除查询出来的表,因为那些都是临时表,每天都能有几十张的临时表的存在,现想要放到作业上,每天自动执行删除,在线等,谢谢
  • 整理一些MySQL常用SQL语句:插入、更新、删除、查询、根据指定列对结果集进行排序等。数据库表: student表 course表 sc表student表中sno为主键,course表中cno为主键,sc表中sno和cno为联合主键,并且分别对应...
  • 详细说明SQL语句应用及操作。--语 句 功 能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中数据 -数据定义 CREATE...
  • 利用 UNION 关键字,可以给出多条 SELECT 语句,并将它们的结果组合成一个结果集。合并时,两个表对应的列数和数据类型必须相同。SELECT 语句之间使用 UNION 或 UNION ALL 关键字分隔。不使用关键字 ALL,执行的时候...
  • 1.max函数: max函数对不能比较或排序 text、ntext 和 image 数据类型,除非使用 IS NULL 或 LIKE 运算符后在每个字段中加MAX(); DATALENGTH ( expression ) ... NULL 的 DATALENGTH 的结果是 NULL。 2.使用max.
  • 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段...就可以得到无重复记录的结果集。 如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除 select distinct
  • 在MS-SQL如果将两个或查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行,常用的方法 一. 使用union 或union All语句 1. union 与 union all语句的区别 UNION 组合多个表(或结果集)并...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,094
精华内容 437
关键字:

删除语句的结果集