精华内容
下载资源
问答
  • java执行删除sql语句
    千次阅读
    2021-03-08 14:49:09

    小编典典

    您可以使用以下示例实现addBatch和executeBatch命令同时执行多个 SQL 命令。

    批处理允许您将相关的SQL语句分组为一个批处理,并通过一次调用将其提交给数据库。参考

    当您一次将多个SQL语句发送到数据库时,可以减少通信开销,从而提高性能。

    不需要JDBC驱动程序即可支持此功能。您应该使用该DatabaseMetaData.supportsBatchUpdates()方法确定目标数据库是否支持批量更新处理。如果您的JDBC驱动程序支持此功能,则该方法返回true。

    Statement,PreparedStatement和CallableStatement 的 executeBatch()用于启动所有组合在一起的语句的执行。

    正如您可以将语句添加到批处理中一样,您可以使用 addBatch()方法添加的所有语句。但是,您不能有选择地选择要删除的语句。

    例:

    import java.sql.*;

    public class jdbcConn {

    public static void main(String[] args) throws Exception{

    Class.forName("org.apache.derby.jdbc.ClientDriver");

    Connection con = DriverManager.getConnection

    ("jdbc:derby://localhost:1527/testDb","name","pass");

    Statement stmt = con.createStatement

    (ResultSet.TYPE_SCROLL_SENSITIVE,

    ResultSet.CONCUR_UPDATABLE);

    String insertEmp1 = "insert into emp values

    (10,'jay','trainee')";

    String insertEmp2 = "insert into emp values

    (11,'jayes','trainee')";

    String insertEmp3 = "insert into emp values

    (12,'shail','trainee')";

    con.setAutoCommit(false);

    stmt.addBatch(insertEmp1);//inserting Query in stmt

    stmt.addBatch(insertEmp2);

    stmt.addBatch(insertEmp3);

    ResultSet rs = stmt.executeQuery("select * from emp");

    rs.last();

    System.out.println("rows before batch execution= "

    + rs.getRow());

    stmt.executeBatch();

    con.commit();

    System.out.println("Batch executed");

    rs = stmt.executeQuery("select * from emp");

    rs.last();

    System.out.println("rows after batch execution= "

    + rs.getRow());

    }

    }

    2020-09-08

    更多相关内容
  • 主要介绍了Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • JAVA基础——SQL语句

    千次阅读 2021-06-19 08:51:07
    JAVA基础——SQL语句SQL 简介SQL 是什么?SQL 能做什么?SQL基础语法(增删查改)数据库表create table (新建表)SQL SELECT 语句(查询数据)SQL SELECT 语法SQL INSERT INTO 语句(新增数据)SQL INSERT INTO语法SQL ...

    SQL 简介

    SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
    一句话就是:访问和处理数据库的标准的计算机语言

    SQL 是什么?

    • SQL 指结构化查询语言
    • SQL 使我们有能力访问数据库
    • SQL 是一种 ANSI 的标准计算机语言

    注:ANSI,美国国家标准化组织

    SQL 能做什么?

    • SQL 面向数据库执行查询
    • SQL 可从数据库取回数据
    • SQL 可在数据库中插入新的记录
    • SQL 可更新数据库中的数据
    • SQL 可从数据库删除记录
    • SQL 可创建新数据库
    • SQL 可在数据库中创建新表
    • SQL 可在数据库中创建存储过程
    • SQL 可在数据库中创建视图
    • SQL 可以设置表、存储过程和视图的权限

    SQL基础语法(增删查改)

    重要的事情说三遍:
    使用SQL语句的时候 末尾一定要加’;’ 切记 (SQL 对大小写不敏感:SELECT 与 select 是相同的。)
    使用SQL语句的时候 末尾一定要加’;’ 切记 (SQL 对大小写不敏感:SELECT 与 select 是相同的。)
    使用SQL语句的时候 末尾一定要加’;’ 切记 (SQL 对大小写不敏感:SELECT 与 select 是相同的。)

    数据库表

    一个数据库通常包含一个或多个表(每个表又有不同的数据),每个表都有一个名字表示,表包含带有数据的记录(行)。
    打个比方 就是:
    一个班级有不同的学生,每个学生都有自己的兴趣爱好

    mysql> use test;
    Database changed
    mysql> select * from text;
    +-------+----------+--------------+------------+
    | pk_id | idx_name | idx_password | idx_driver |
    +-------+----------+--------------+------------+
    |     1 | abc      | abc          | NULL       |
    |     4 | 111      | 111          | NULL       |
    +-------+----------+--------------+------------+
    

    use test; 命令用于选择数据库。
    select * from test; 读取数据表的信息。
    上面的表包含2条记录(每一条对应一个人的信息)和4个列(pk_id,idx_name,idx_password,idx_driver)。
    补充语句 set names utf8; 命令用于设置使用的字符集。 因为有人用的是GBK等版本 默认应该还是utf-8
    例如我的test表的就是:
    utf8mb4_0900_ai_ci

    create table (新建表)

    create TABLE text(
    pk_id int,
    idx_name varchar(20),
    idx_password varchar(20),
    idx_driver varchar(20)
    )
    

    SQL SELECT 语句(查询数据)

    其实这个我刚刚上面已经放过代码了 没注意的铁子 可以看到 数据库表 这个地方

    • SELECT 语句用于从数据库中选取数据。

    • SELECT 语句用于从数据库中选取数据。

      查询的结果被存储在一个结果表中,称为结果集

    SQL SELECT 语法

    mysql> select idx_name ,idx_password from text;
    +----------+--------------+
    | idx_name | idx_password |
    +----------+--------------+
    | abc      | abc          |
    | 111      | 111          |
    +----------+--------------+
    

    或者

    mysql> select * from text;
    +-------+----------+--------------+------------+
    | pk_id | idx_name | idx_password | idx_driver |
    +-------+----------+--------------+------------+
    |     1 | abc      | abc          | NULL       |
    |     4 | 111      | 111          | NULL       |
    +-------+----------+--------------+------------+
    

    其实 他们的区别就是 *(代表全部列)和具体的列名
    如果你下想查看每一列的数据,那就使用 select * from 表名; 如果只是查看具体的某几列,那就使用 select 列名1,列名2 from 表名;


    SQL INSERT INTO 语句(新增数据)

    INSERT INTO 语句用于向表中插入新记录。

    SQL INSERT INTO语法

    INSERT INTO 语句可以有两种编写形式。

    第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

    INSERT INTO 表名
    VALUES (value1,value2,value3,...);
    //这些个value都是对应表的每一列取写入的   所以 不管你的id是自增序列还是上面的  这个不能省略
    
    //这个单引号是因为 列的数据类型是 varchar 因为要那个单引号  不然就会报错
    mysql> insert into text values(123,'CCW','CCWNB','NB'); 
    Query OK, 1 row affected (0.01 sec)
    mysql> select * from text;
    +-------+----------+--------------+------------+
    | pk_id | idx_name | idx_password | idx_driver |
    +-------+----------+--------------+------------+
    |     1 | abc      | abc          | NULL       |
    |     4 | 111      | 111          | NULL       |
    |   123 | CCW      | CCWNB        | NB         |
    +-------+----------+--------------+------------+
    3 rows in set (0.04 sec)
    

    第二种形式需要指定列名及被插入的值:

    INSERT INTO 表名(列名1,列名2,列名3,...)
    VALUES (value1,value2,value3,...);
    //如果说自增序列 你不想自己输入  那么这个就可以做到 因为你可以不输入那个列嘛
    
    mysql> insert into text(idx_name,idx_password,idx_driver) values('CCW','CCWNB','NB');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from text;
    +-------+----------+--------------+------------+
    | pk_id | idx_name | idx_password | idx_driver |
    +-------+----------+--------------+------------+
    |     1 | abc      | abc          | NULL       |
    |     4 | 111      | 111          | NULL       |
    |   123 | CCW      | CCWNB        | NB         |
    |   124 | CCW      | CCWNB        | NB         |
    +-------+----------+--------------+------------+
    4 rows in set (0.04 sec)
    你看这个 124 就是数据库自动输入的 在上一个基础上+1 
    

    SQL UPDATE 语句(修改数据)

    UPDATE 语句用于更新表中的记录(已存在)。

    SQL UPDATE 语法

    UPDATE 表名
    SET 列名1=value1,列名2=value2,...   //这里是要修改列里面的数据
    WHERE some_column=some_value; 
    
     /*这个是 怎么说呢  让我思考一下  嗯... 你要修改某一行的数据,那么你首先找到这一行是吧
     但你只需要 这一行的其他数据,然后通过这个取定位*/
    

    演示:

    mysql> UPDATE text
    SET idx_name='AAA'
    WHERE idx_password='111';
    Query OK, 0 rows affected (0.00 sec)
    Rows matched: 1  Changed: 0  Warnings: 0
    
    mysql> SELECT * FROM TEXT;
    +-------+----------+--------------+------------+
    | pk_id | idx_name | idx_password | idx_driver |
    +-------+----------+--------------+------------+
    |     1 | abc      | abc          | NULL       |
    |     4 | AAA      | 111          | NULL       |
    |   123 | CCW      | CCWNB        | NB         |
    |   124 | CCW      | CCWNB        | NB         |
    +-------+----------+--------------+------------+
    4 rows in set (0.02 sec)
    

    特别注意: 如果 你的where后的的查找值不是唯一的 那么 那几行都会修改 如果不懂我的意思的话 就看下面的代码样例吧

    mysql> UPDATE text
    SET idx_name='ccw'  //我把大写的 CCW 改成了小写的 ccw
    WHERE idx_password='CCWNB';
    Query OK, 2 rows affected (0.00 sec)
    Rows matched: 2  Changed: 2  Warnings: 0
    
    mysql> select * from text;
    +-------+----------+--------------+------------+
    | pk_id | idx_name | idx_password | idx_driver |
    +-------+----------+--------------+------------+
    |     1 | abc      | abc          | NULL       |
    |     4 | AAA      | 111          | NULL       |
    |   123 | ccw      | CCWNB        | NB         |
    |   124 | ccw      | CCWNB        | NB         |
    +-------+----------+--------------+------------+
    4 rows in set (0.03 sec)
    

    Update 警告!

    在更新记录时要格外小心!在上面的实例中,如果我们省略了 WHERE 子句,如下所示:

    UPDATE text
    SET idx_name='JSU',idx_password='jsu'
    执行以上代码会将 Websites 表中所有数据的 idx_name改为 JSU,idx_password 改为 jsu。
    

    执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。
    这…我还是演示一下吧!

    mysql> UPDATE text
    SET idx_name='JSU',idx_password='jsu';
    Query OK, 4 rows affected (0.00 sec)
    Rows matched: 4  Changed: 4  Warnings: 0
    
    mysql> select * from text;
    +-------+----------+--------------+------------+
    | pk_id | idx_name | idx_password | idx_driver |
    +-------+----------+--------------+------------+
    |     1 | JSU      | jsu          | NULL       |
    |     4 | JSU      | jsu          | NULL       |
    |   123 | JSU      | jsu          | NB         |
    |   124 | JSU      | jsu          | NB         |
    +-------+----------+--------------+------------+
    4 rows in set (0.04 sec)
    

    SQL DELETE 语句(删除数据)

    DELETE 语句用于删除表中的记录。

    SQL DELETE 语法

    DELETE FROM 表名
    WHERE some_column=some_value;
    //这个也是定位   指定一列的值 然后通过查找 然后删除指定的列对应的值的哪一行数据
    

    演示:

    mysql> delete from text where pk_id=1;
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from text;
    +-------+----------+--------------+------------+
    | pk_id | idx_name | idx_password | idx_driver |
    +-------+----------+--------------+------------+
    |     4 | JSU      | jsu          | NULL       |
    |   123 | JSU      | jsu          | NB         |
    |   124 | JSU      | jsu          | NB         |
    +-------+----------+--------------+------------+
    3 rows in set (0.04 sec)
    

    同时 这个也是 注意where 和上面UPDATA警告 一样一样的

    mysql> delete from text where idx_name='JSU';
    Query OK, 3 rows affected (0.01 sec)
    
    mysql> select * from text;
    Empty set
    //现在就是空表了  因为我删完了
    

    拓展一下

    1.多表查询

    不多说 直接看例子好吧 待老夫先去整俩个表

    测试数据:
    表名为:person
    在这里插入图片描述

    表名为:text
    在这里插入图片描述

    1.1概述

    在实际的数据库应用中,我们经常需要从多个数据表中读取数据,这时我们就可以使用SQL语句中的连接(JOIN),在两个或多个数据表中查询数据。

    JOIN 按照功能可分为如下三类:

    INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录;
    LEFT JOIN(左连接):获取左表中的所有记录,即使在右表没有对应匹配的记录;
    RIGHT JOIN(右连接):与 LEFT JOIN 相反,用于获取右表中的所有记录,即使左表没有对应匹配的记录。

    1.2用法

    1.2.1 SQL INNER JOIN (交集)

    如图:
    在这里插入图片描述
    SQL INNER JOIN 语法

    SELECT column_name(s) 查询的列
    FROM table1 //表一  
    INNER JOIN table2 //表二
    ON table1.column_name=table2.column_name; //需要判断相等的列
    
    或:
    
    SELECT column_name(s)
    FROM table1
    JOIN table2
    ON table1.column_name=table2.column_name;
    

    注释:INNER JOIN 与 JOIN 是相同的。

      select text.idx_name ,person.idx_name 
     from text
     inner join person
     on person.idx_team=text.idx_name//需要判断相等的列
     order by person.idx_name; //通过这一列 排序
    +----------+----------+
    | idx_name | idx_name |
    +----------+----------+
    | 皇马     | C罗      |
    | 巴萨     | 格列兹曼 |
    | 巴萨     | 梅西     |
    | 拜仁     | 莱万     |
    | 曼联     | 鲁尼     |
    +----------+----------+
    5 rows in set (0.03 sec)
    
    

    注释:INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 “text” 表中的行在 “person” 中没有匹配,则不会列出这些行。

    1.2.2 SQL LEFT JOIN (看左边)

    LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

    上图:
    在这里插入图片描述
    SQL LEFT JOIN 语法
    用法差不多,只是返回的结果不一样

    SELECT column_name(s)
    FROM table1   
    LEFT JOIN table2
    ON table1.column_name=table2.column_name;
    或:
    
    SELECT column_name(s)
    FROM table1
    LEFT OUTER JOIN table2
    ON table1.column_name=table2.column_name;
    

    注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。(这个咱也没遇到过 咱也不晓得 所以不多赘述)

    演示:
    这个为了演示 在text中多加了与一行记录

    INSERT into text VALUES(5,'曼城','曼城NB');
    

    这个就是 通过表一的值 然后去表二去查找 找到返回,找不到 就返回NULL

      select text.idx_name ,person.idx_name
     from text  
    left join person //表二
     on person.idx_team=text.idx_name; //判断条件
    +----------+----------+
    | idx_name | idx_name |
    +----------+----------+
    | 巴萨     | 格列兹曼 |
    | 巴萨     | 梅西     |
    | 皇马     | C罗      |
    | 拜仁     | 莱万     |
    | 曼联     | 鲁尼     |
    | 曼城     | NULL     |
    +----------+----------+
    6 rows in set (0.04 sec)
    

    注释:LEFT JOIN 关键字从左表(text)返回所有的行,即使右表(person)中没有匹配。

    1.2.3 SQL RIGHT JOIN (看右边)

    RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

    返回结果如图:
    在这里插入图片描述
    SQL RIGHT JOIN 语法

    SELECT column_name(s)
    FROM table1
    RIGHT JOIN table2
    ON table1.column_name=table2.column_name;
    或:
    
    SELECT column_name(s)
    FROM table1
    RIGHT OUTER JOIN table2
    ON table1.column_name=table2.column_name;
    

    注释:在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。

    演示:
    这里为了演示在person表中新增一个 马儿吧
    因为 右边返回的值 左边对应不上 就是 NULL

    INSERT INTO person VALUES (6,'内马尔','巴黎');
    
    mysql>  select text.idx_name ,person.idx_name
     from person
    left join text
     on person.idx_team=text.idx_name;
    +----------+----------+
    | idx_name | idx_name |
    +----------+----------+
    | 巴萨     | 梅西     |
    | 皇马     | C罗      |
    | 巴萨     | 格列兹曼 |
    | 曼联     | 鲁尼     |
    | 拜仁     | 莱万     |
    | NULL     | 内马尔   |
    +----------+----------+
    6 rows in set (0.04 sec)
    

    注释:RIGHT JOIN 关键字从右表(access_log)返回所有的行,即使左表(Websites)中没有匹配。

    2.约束

    SQL 约束用于规定表中的数据规则。

    如果存在违反约束的数据行为,行为会被约束终止。

    约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

    语法

    SQL CREATE TABLE + CONSTRAINT 语法
    CREATE TABLE table_name
    (
    column_name1 data_type(size) constraint_name,
    column_name2 data_type(size) constraint_name,
    column_name3 data_type(size) constraint_name,
    ....
    );
    

    在 SQL 中,我们有如下约束:

    • NOT NULL - 指示某列不能存储 NULL 值。
    • UNIQUE - 保证某列的每行必须有唯一的值。
    • PRIMARY KEY - NOT NULL 和 UNIQUE
      的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
    • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
    • CHECK - 保证列中的值符合指定的条件。
    • DEFAULT - 规定没有给列赋值时的默认值。

    SQL NOT NULL 约束

    NOT NULL 约束强制列不接受 NULL 值。

    NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

    下面的 SQL 强制 “ID” 列、 “LastName” 列以及 “FirstName” 列不接受 NULL 值:

    CREATE TABLE Persons (
        ID int NOT NULL,
        LastName varchar(255) NOT NULL,
        FirstName varchar(255) NOT NULL,
        Age int
    );
    

    添加 NOT NULL 约束
    在一个已创建的表的 “Age” 字段中添加 NOT NULL 约束如下所示:

    实例

    ALTER TABLE Persons
    MODIFY Age int NOT NULL;
    删除 NOT NULL 约束
    在一个已创建的表的 "Age" 字段中删除 NOT NULL 约束如下所示:
    

    实例

    ALTER TABLE Persons
    MODIFY Age int NULL;
    

    SQL UNIQUE 约束

    UNIQUE 约束唯一标识数据库表中的每条记录。

    UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

    PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。

    请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY (主键)约束。

    CREATE TABLE 时的 SQL UNIQUE 约束
    下面的 SQL 在 “Persons” 表创建时在 “P_Id” 列上创建 UNIQUE 约束:

    MySQL:

    CREATE TABLE Persons
    (
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    UNIQUE (P_Id) 
    )
    

    ALTER TABLE 时的 SQL UNIQUE 约束
    当表已被创建时,如需在 “P_Id” 列创建 UNIQUE 约束,请使用下面的 SQL:

    ALTER TABLE Persons
    ADD UNIQUE (P_Id)
    

    撤销 UNIQUE 约束
    如需撤销 UNIQUE 约束,请使用下面的 SQL:

    ALTER TABLE Persons
    DROP INDEX uc_PersonID
    

    注:总的来说 “uc_PersonID ” 是一个约束名 !上面建的是唯一约束,为了方便区别约束名一般起得有规律点比如UC(就是UNIQUE CONSTRAINT的缩写意思是唯一约束) uc_PersonID 就是对表中的PersonID 建唯一约束

    SQL PRIMARY KEY 约束

    PRIMARY KEY (主键)约束唯一标识数据库表中的每条记录。

    主键必须包含唯一的值。

    主键列不能包含 NULL 值。

    CREATE TABLE 时的 SQL PRIMARY KEY 约束
    下面的 SQL 在 “Persons” 表创建时在 “P_Id” 列上创建 PRIMARY KEY 约束:

    MySQL:

    CREATE TABLE Persons
    (
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    PRIMARY KEY (P_Id)
    )
    

    ALTER TABLE 时的 SQL PRIMARY KEY 约束
    当表已被创建时,如需在 “P_Id” 列创建 PRIMARY KEY 约束,请使用下面的 SQL:

    ALTER TABLE Persons
    ADD PRIMARY KEY (P_Id)
    

    撤销 PRIMARY KEY 约束
    如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:

    ALTER TABLE Persons
    DROP PRIMARY KEY    //因为一般来说  一个表一个主键 
    

    .

    SQL DEFAULT 约束

    DEFAULT 约束用于向列中插入默认值。

    如果没有规定其他的值,那么会将默认值添加到所有的新记录。

    CREATE TABLE 时的 SQL DEFAULT 约束
    下面的 SQL 在 “Persons” 表创建时在 “City” 列上创建 DEFAULT 约束:

    CREATE TABLE Persons
    (
        P_Id int NOT NULL,
        LastName varchar(255) NOT NULL,
        FirstName varchar(255),
        Address varchar(255),
        City varchar(255) DEFAULT 'Sandnes' 
    )
    

    ALTER TABLE 时的 SQL DEFAULT 约束
    当表已被创建时,如需在 “City” 列创建 DEFAULT 约束,请使用下面的 SQL:

    ALTER TABLE Persons
    ALTER City SET DEFAULT 'SANDNES'
    

    撤销 DEFAULT 约束
    如需撤销 DEFAULT 约束,请使用下面的 SQL:

    ALTER TABLE Persons
    ALTER City DROP DEFAULT
    

    这个就讲到这里了 下次见!
    在这里插入图片描述

    展开全文
  • JAVA连接SQL数据库 如何让JAVA的输出具体的执行SQL语句JAVA连接SQL数据库 如何让JAVA的输出具体的执行SQL语句相关问题:匿名网友:import java.sql.ResultSet; //都是导入一些下面需要用到的类String ConnStr=...

    导航:网站首页 >

    JAVA连接SQL数据库 如何让JAVA的输出具体的执行的SQL语句

    JAVA连接SQL数据库 如何让JAVA的输出具体的执行的SQL语句

    相关问题:

    匿名网友:

    import java.sql.ResultSet; //都是导入一些下面需要用到的类

    String ConnStr="jdbc:microsoft:sqlserver://WINJUE:1433;DatabaseName=library";//jdbc连接数据库url

    public sqlServer() {

    try {

    Class.forName(DBDriver).newInstance(); //加载SQLServer驱动程序,DBDriver是你上面的代码;

    conn=DriverManager.getConnection(ConnStr,"sa","sa"); //和数据库建立连接,ConnStr里面的://WINJUE:1433;DatabaseName=library 分别是主机地址:端口号;你自己建的数据库(database)

    }

    catch(SQLException e) { //捕获SQL异常

    System.out.println(e.getMessage()); //要是出现异常,捕获到后,这句代码会把异常的信息(出错的原因之类的)打印出来。

    }

    catch(Exception e) { //捕获异常,这个是总的,所以不能和上面的顺序颠倒,先小到大,我连ORACLE和MYSQL,这个我通常不要,只须捕获SQL异常就OL

    System.out.println(e.getMessage());

    }

    }

    public Connection getConn(){ //获取连接方法

    return conn;

    }

    public void insert(String sql) {//增删改

    try {

    Statement stm=conn.createStatement(); 调用conn下的方法,创建Statement对象

    stm.executeUpdate(sql);//调用Statement下的方法执行SQL语句

    System.out.println("操作成功");

    }

    catch(Exception e){

    System.out.println(e.getMessage()); //如上

    }

    }

    public ResultSet query(String sql){ //查询

    try{

    Statement stm=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

    rs=stm.executeQuery(sql); //如上

    }

    catch(Exception e){

    System.out.println(e.getMessage());

    }

    return rs;

    }

    public static void main(String args[]){

    sqlServer conn=new sqlServer(); //创建sqlServer,就是你上面的类,以便调用里面的方法

    ResultSet rs=conn.query("select * from Orders"); //调用query方法,执行SQL语句后,把结果保存到结果集里

    //conn.insert("delete from BookInfo where BookName =" +"\'悟空传\'");

    //conn.insert("insert into BookInfo (BookID,BookName,Author,KeyWord) values (14445678,'悟空传','今何在','孙悟空')");

    try{

    while(rs.next()){ //循环,判断结果集里的记录,一条条往下走,是否还有下一条记录,若是返回真,继续走

    System.out.print(rs.getString("OrderID"));

    //System.out.print(rs.getString("U_age"));

    }

    rs.close() ; //关闭结果集

    }

    catch (Exception e){

    System.out.println(e.getMessage());

    }

    }

    }

    注:

    TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。

    TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至能进行特定定位,例如移至列表中的第四个记录或从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。

    TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 相同,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。

    匿名网友:

    1.JAVA连接SQL数据库

    问:import java.sql.Connection; import java.sql.DriverManager; import j...

    2.如何让JAVA的输出具体的执行的SQL语句

    答:如果你是做javaweb项目的话,刚好使用了hibernate技术的话,是可以在后台打印拼接的sql语句的。

    3.java.sql的sql包内容

    答:java.sql 包中包含用于以下方面的 API:通过 DriverManager 实用程序建立与数据库的连接DriverManager 类:建立与驱动程序的连接SQLPermission 类:代码在 Security Manager(比如 applet)中运行时提供权限,试图通过 DriverManager 设置一个记...

    4.java中执行sql插入语句怎么弄

    问:try { Statement select = DatabaseConnector.getConnection().createSt...

    5.java加载SQL的驱动程序

    问:import java.sql.*; public class test{ //指定驱动程序 private static...

    6.java 执行SQL返回结果

    问:public List getFwxxList(String title){ String sql=select * from fw...

    7.求java链接sqlserver数据库的代码,以及配置

    答:public class JDBConnect { //private static final String DRIVER=com.mysql.jdbc.Driver; private static final String DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver; //private static final String URI=jdbc:mysql://localhos...

    8.Java怎么加入SQL驱动程序

    问:加入之后在代码中又怎么去实现.

    9.跪求高手!jsp 网页 提示 import=java.sql.* 错误

    问:如题,网上下了一个jsp在线考试系统,用MyEclipse打开,所有页面的impor...

    10.java中怎样向SQLserver中插入数据

    答:(最基本的连接方法) 1。获取连接 获取连接需要两步, 一是使用DriverManager来注册驱动(Class.forName(“com.mysql.jdbc.Driver”)),二是使用DriverManager来获取Connection对像DriverManager.getConnection(url,username,password) 2.获取St...

    问题推荐

    展开全文
  • 2、java.sql.Statement 返回键获取: a: 使用JDBC 3.0提供的 getGeneratedKeys(推荐使用) Statement stmt = ... ; stmt.executeUpdate("INSERT INTO table_name(......) VALUES(......)", Statement.RETURN_...

    当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用。我们通常的做法有如下几种:

    1、先 select max(id) +1 ,然后将+1后的值作为主键插入数据库;

    2、使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select max(id) 获取主键值;

    3、对于Oracle,使用 sequence 获取值。

    对于以上3种方法都无法绝对保证在高并发情况下的操作的原子性。

    现记录以下几种获取数据库主键值方法:

    1、数据库原生支持的sql方法:

    SQLServer:

    INSERT INTO table_name (.....) VALUES(......)  SELECT @@IDENTITY AS aliasname;

    上面的语句相当于查询语句,从结果集中使用 getXXX(aliasname) 方法获取主键值。

    Oracle:

    INSERT INTO table_name(......) VALUES(......) RETURNING[primaryKey INTO]:aliasname;

    也是相当于查询语句,从结果集中使用 getXXX(aliasname) 方法获取主键值。

    2、java.sql.Statement 返回键获取:

    a: 使用JDBC 3.0提供的 getGeneratedKeys(推荐使用)

    Statement stmt = ... ;

    stmt.executeUpdate("INSERT INTO table_name(......) VALUES(......)", Statement.RETURN_GENERATED_KEYS);

    ResultSet rs = stmt.getGeneratedKeys();

    int keyValue = -1;

    if (rs.next()) {

    keyValue = rs.getInt(1);

    }

    b:使用特定数据库特有的SQL

    Statement stmt = ... ;

    stmt.executeUpdate("INSERT INTO table_name(......) VALUES(......)", Statement.RETURN_GENERATED_KEYS);

    ResultSet rs = stmt.executeQuery("SELECT LAST_INSERT_ID()");

    int keyValue = -1;

    if (rs.next()) {

    keyValue = rs.getInt(1);

    }

    那么现在我就一个例子来看一下原生的sql怎么能得到执行的返回结果

    项目背景:数据库是oracle数据库,id生成规则是通过触发器插入数据的时候自动增长,所以在插入数据的时候在sql中就不需要指明id值。但是另外一张表需要引用这个id值作为外键,那么就必须获得被引用的这个表的ID,为了避免并发问题,我们只能在插入前面那张表的时候就获得他的ID,所以我使用了下面的方法来处理。

    Connection con = DBConnector.getconecttion(); // 取得一个数据库连接

    CallableStatement cst = null;

    con.setAutoCommit(false);

    String insertSql = "begin insert into TABLE (field_0,field_1) values (value_0,value_1) returning id into ?;end; ";

    try {

    cst = con.prepareCall(insertSql); //执行存储过程

    cst.registerOutParameter(1, Types.INTEGER); //为存储过程设定返回值

    int count = cst.executeUpdate(); //得到预编译语句更新记录或删除操作的结果

    int id = cst.getInt(1); //得到返回值

    System.out.println("成功执行了:" + count + "条数据,其ID值:" + id);

    } catch (SQLException e1) {

    con.rollback();

    con.setAutoCommit(true);

    }finally{

    con.commit();

    con.close();

    }

    展开全文
  • java-实用的sql语句

    2021-02-27 20:37:25
    一、在数据库创建表格的SQL语句1,创建一个link表格,包含属性:lid 主键,title 标题, imgpath 图片地址 , url 网址 , info 说明, isshow 显示1, 不显示0 , sort 顺序CREATE TABLE link ( //创建 link 表格lid INT ...
  • Java中的SQL语句SQL基础创建数据库删除数据库备份数据库分离数据库附加数据库修改数据库名称创建新表根据已有的表创建新表删除新表增加一个列添加主键删除主键创建索引删除索引创建视图删除视图基本SQL操作查找选择...
  • 1.主程序中添加代码,执行sql...下面代码运行 sql 目录中的四个脚本程序,每次运行都会删除四个数据库再重新创建,并初始化数据。 package cn.tedu.dbinit; import org.springframework.beans.factory.annotation.Auto
  • JAVA连接SQL实现删除数据

    千次阅读 2018-11-06 22:43:56
    删除一条数据 <%@ page language="...java.sql.*" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <me
  • } } } 结果是::我试了什么语句都不好使,怎么回事啊,在线等 开始连接 连接成功! 创建stm成功 public class DBManager { private DBManager() {} static{ try { Class.forName(DBDriverClass); } catch ...
  • StringBuffersqlBuffer=newStringBuffer("SELECT*FROMTS_USERwhere1=1");if(ID!=null&&!"".equals(ID)){sqlBuffer.append("ANDID="+ID);}if(tel!..."".equals(tel)){sqlBuffer.a...StringBuffe...
  • Java学习日志(二十八)SQL语句增加表中数据修改表中数据删除表中数据SQL约束主键约束非空约束唯一约束默认约束 SQL语句 增加表中数据 创建表catgory 字段:分类主键,分类名称 分类主键:添加主键约束和自动增长 ...
  • JAVA中用 SQL语句操作小结

    千次阅读 2021-02-12 23:49:23
    1、添加记录(INSERT)使用SQL语句的INSERT命令可以向数据库中插入记录,INSERT命令的基本形式为:INSERT INTO 表名[(字段名1,字段名2…)] VALUES (值1,值2,…)若在输入记录时,每个字段均有内容,可省略表名后的字段...
  • 本文实例讲述了Java使用Statement接口执行SQL语句操作的方法。分享给大家供大家参考,具体如下:Statement执行SQL语句:1. 对数据库的曾删改操作时,使用stmt.executeUpdate(sql) 执行给定 SQL 语句,分别为 insert...
  • 使用 JDBC 执行 SQL 语句

    千次阅读 2022-04-20 09:57:38
    使用 JDBC 执行 SQL 语句 在上一篇文章中我们了解到什么是JDBC驱动程序以及如何打开和安全地关闭MariaDB数据库连接。接下来我们在上一篇文章的基础上学习如何使用 JDBC 对 SQL 数据库执行SELECT、INSERT、UPDATE和...
  • java模糊查询sql语句

    千次阅读 2021-03-09 18:02:35
    SQL 模糊查询中需要用到__like__关键字 27. 在 SQL 中,声明一个整型变量 ...系统配置 开发语言:Java 数据库:MySql 5.1 语言开发环境:NetBeans 6.8 数据库辅助工具:SQLyog 企业版 数据库默认字符集(ISO-8859-1) 数...
  • JAVA的SQL帮助类,帮助使用jdbc快速使用SQL语句更新,删除,查询数据,只需要专注于SQL语句执行,而不需要写数据库的连接与释放
  • Java代码实体类生成SQL语句Java实体类转数据库)

    万次阅读 多人点赞 2021-07-19 17:43:04
    有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可。 代码如下: ...
  • java-创建与删除数据库中的表import java.sql.*;public class TableDemo{private String dbURL="jdbc:odbc:example"; //数据库标识名private String user="devon"; //数据库用户private String password="book"; //...
  • } /** * 删除操作根据条件1 */ @Test public void testDeleteByConditions1() { QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("name","张三"); userMapper.delete(wrapper); } /** * 删除操作根据条件2 ...
  • 监控mysql执行sql语句

    千次阅读 2021-02-05 03:05:50
    linux平台 监控mysql执行sql语句 为了做好配合开发做性能和功能测试,方便监控正在执行sql语句, 可以在/etc/mysqld中添加如下: log =/usr/local/mysql/var21005/mysql.log 就可以使用: tail -f mysql.log 来监控...
  • entityManager大数据量批量执行sql优化
  • hibernate执行sql语句 查询 删除

    千次阅读 2018-06-22 14:43:21
    //执行删除sql语句@Override public void deleteById(String id) { // TODO Auto-generated method stub int a=this.getCurrentSession().createSQLQuery("delete from players where id='"+id+"'&...
  • 通过mybatis拦截器将查询语句、更新语句删除语句、插入语句中指定表明替换为另一个表名
  • C# 执行 SQL 语句

    千次阅读 2021-12-08 01:51:49
    01 Command 对象概述Command 对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的 SQL 语句。Command 对象主要有以下几种方式。 SqlC...
  • Sorm4j将Java对象设置为SQL语句的参数并执行SQL语句,然后将结果映射到Java对象。它会打开与数据库的连接,并在执行后自动将其关闭。 这是lambda表达式的示例: // Creates an entry point as javax.sql....
  • 编译没有问题只执行了第一条SQL语句即ssql(之前定义了),后一条SQL语句即ssql_1没有执行。但是把第二句的?改成一个具体的房间号(并把那个于?相关的赋值语句删除)就能执行两个。哪...编译没有问题只执行了第一条SQL...
  • Java一次执行多条SQL语句

    万次阅读 2017-10-11 19:27:35
    本实例将演示如何一次执行多条SQL语句,这些SQL语句可以是插入语句、更新语句和删除语句。本实例以myuser数据库中的staff表为例。 | |目录 1技术要点 2代码实现 3程序解读 1技术要点 一次...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 190,168
精华内容 76,067
关键字:

java执行删除sql语句

友情链接: keyboard.rar