-
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语句操作
2020-08-24 20:43:41主要介绍了Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
JAVA基础——SQL语句
2021-06-19 08:51:07JAVA基础——SQL语句SQL 简介SQL 是什么?SQL 能做什么?SQL基础语法(增删查改)数据库表create table (新建表)SQL SELECT 语句(查询数据)SQL SELECT 语法SQL INSERT INTO 语句(新增数据)SQL INSERT INTO语法SQL ...JAVA基础——SQL语句
SQL 简介
SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
一句话就是:访问和处理数据库的标准的计算机语言SQL 是什么?
- SQL 指结构化查询语言
- SQL 使我们有能力访问数据库
- SQL 是一种 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_cicreate 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表中新增一个 马儿吧
因为 右边返回的值 左边对应不上 就是 NULLINSERT 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语句
2021-03-16 19:18:47JAVA连接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...
问题推荐
-
Java执行sql语句并获取指定返回值
2021-03-09 00:12:252、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语句基本介绍
2020-08-02 09:01:14Java中的SQL语句SQL基础创建数据库删除数据库备份数据库分离数据库附加数据库修改数据库名称创建新表根据已有的表创建新表删除新表增加一个列添加主键删除主键创建索引删除索引创建视图删除视图基本SQL操作查找选择... -
在Spring框架中,使用Java代码执行sql语句
2021-01-09 11:36:541.主程序中添加代码,执行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 -
JAVA程序卡在sql语句不执行了
2021-02-28 11:38:17} } } 结果是::我试了什么语句都不好使,怎么回事啊,在线等 开始连接 连接成功! 创建stm成功 public class DBManager { private DBManager() {} static{ try { Class.forName(DBDriverClass); } catch ... -
java中怎么用sql语句做修改 增加 删除的功能 不只是sql语句,要有具体的代码
2021-03-08 15:00:11StringBuffersqlBuffer=newStringBuffer("SELECT*FROMTS_USERwhere1=1");if(ID!=null&&!"".equals(ID)){sqlBuffer.append("ANDID="+ID);}if(tel!..."".equals(tel)){sqlBuffer.a...StringBuffe... -
Java学习日志(二十八): SQL语句操作数据,SQL约束
2020-12-14 18:40:43Java学习日志(二十八)SQL语句增加表中数据修改表中数据删除表中数据SQL约束主键约束非空约束唯一约束默认约束 SQL语句 增加表中数据 创建表catgory 字段:分类主键,分类名称 分类主键:添加主键约束和自动增长 ... -
JAVA中用 SQL语句操作小结
2021-02-12 23:49:231、添加记录(INSERT)使用SQL语句的INSERT命令可以向数据库中插入记录,INSERT命令的基本形式为:INSERT INTO 表名[(字段名1,字段名2…)] VALUES (值1,值2,…)若在输入记录时,每个字段均有内容,可省略表名后的字段... -
Java使用Statement接口执行SQL语句操作实例分析
2021-02-12 18:38:59本文实例讲述了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帮助类,帮助快速使用SQL语句更新,删除,查询数据
2018-06-26 20:28:16JAVA的SQL帮助类,帮助使用jdbc快速使用SQL语句更新,删除,查询数据,只需要专注于SQL语句的执行,而不需要写数据库的连接与释放 -
Java代码实体类生成SQL语句(Java实体类转数据库)
2021-07-19 17:43:04有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可。 代码如下: ... -
java-创建与删除数据库中的表
2021-02-06 21:23:13java-创建与删除数据库中的表import java.sql.*;public class TableDemo{private String dbURL="jdbc:odbc:example"; //数据库标识名private String user="devon"; //数据库用户private String password="book"; //... -
(java)使用Mybatis-Plus中执行sql的一些常用语句
2022-01-31 20:33:10} /** * 删除操作根据条件1 */ @Test public void testDeleteByConditions1() { QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("name","张三"); userMapper.delete(wrapper); } /** * 删除操作根据条件2 ... -
监控mysql执行的sql语句
2021-02-05 03:05:50linux平台 监控mysql执行的sql语句 为了做好配合开发做性能和功能测试,方便监控正在执行的sql语句, 可以在/etc/mysqld中添加如下: log =/usr/local/mysql/var21005/mysql.log 就可以使用: tail -f mysql.log 来监控... -
java大数据量执行几千条修改/删除的sql设置条数批量优化执行
2022-05-11 15:59:26entityManager大数据量批量执行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拦截器修改执行sql语句
2019-09-11 09:12:32通过mybatis拦截器将查询语句、更新语句、删除语句、插入语句中指定表明替换为另一个表名 -
C# 执行 SQL 语句
2021-12-08 01:51:4901 Command 对象概述Command 对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的 SQL 语句。Command 对象主要有以下几种方式。 SqlC... -
Sorm4j将Java对象设置为SQL语句的参数并执行该SQL语句,然后将结果映射到Java对象。它会打开与数据库的...
2021-03-18 13:25:27Sorm4j将Java对象设置为SQL语句的参数并执行该SQL语句,然后将结果映射到Java对象。它会打开与数据库的连接,并在执行后自动将其关闭。 这是lambda表达式的示例: // Creates an entry point as javax.sql.... -
JAVA中在同一事件中执行两条SQL语句,只有第一条执行。
2021-03-09 02:19:24编译没有问题只执行了第一条SQL语句即ssql(之前定义了),后一条SQL语句即ssql_1没有执行。但是把第二句的?改成一个具体的房间号(并把那个于?相关的赋值语句删除)就能执行两个。哪...编译没有问题只执行了第一条SQL... -
Java一次执行多条SQL语句
2017-10-11 19:27:35本实例将演示如何一次执行多条SQL语句,这些SQL语句可以是插入语句、更新语句和删除语句。本实例以myuser数据库中的staff表为例。 | |目录 1技术要点 2代码实现 3程序解读 1技术要点 一次...