‘壹’ java中的sql语句
是的,用的是oracle的序列,oracle特有的序列 SEQUENCE 。
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的VALUES中
- UPDATE 的 SET中
可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
SELECT empseq.currval FROM DUAL;
但是要注意的是:
- 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白?
- 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。
2、Alter Sequence
你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create .
Alter sequence 的例子
ALTER SEQUENCE emp_sequence
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000后从头开始
NOCACHE ;
影响Sequence的初始化参数:
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
可以很简单的Drop Sequence
DROP SEQUENCE order_seq;
‘贰’ java 中如何使用sql插入语句
?"Insert Into room Values('"
+ jTRoomNum.getText().trim() + "','"
+ jStandard.getSelectedItem().toString() + ",'"
+ jRoomKind.getSelectedItem().toString()
+ "0,'"
+ jTARemark.getText()+ ",?,?)'") 前面你加了单引号,后面没有结束的单引号。看标出粗体,后面也一样。
‘叁’ java的sql语句问题
commit是提交一个事务(什么是事务,可以搜索一下),如果发生了错误,可以在finally里面rollback,rollback可以把之前提交的操作撤销。
mysql除了innoDB引擎,其他的到mysql5开始才支持事务吧(如果我没有记错:))。
也许你用的是低版本的mysql。
‘肆’ java如何执行sql语句
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class xxxx {
public static void main(String[] args) {
Connection con = null ;
Statement stmt = null ;
try {
Class.forName("com.mysql.jdbc.Driver"); //mysql为例 不一样的数据库所需的驱动包不一样 连接语句略有不同
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/数据库名", "root", "密码");
stmt = con.createStatement();
String sql = "insert into info values ('用户', 'mima', 'piapiapia~')";
stmt.executeUpdate(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(stmt != null) {
stmt.close();
stmt = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
‘伍’ java中执行sql插入语句怎么弄
1、Connection conn = DriverManager.getConnection(URL,数据库登录名,数据库登录密码);//获得数据库连接。
2、Statement statement = con.createStatement(); //访问数据库。
3、ResultSet resultSet = statement.executeQuery(sql);//执行SQL语句。
‘陆’ Java语言中sql语句
import java.sql.* ;
public class testDB
{
public static void main(String []args)
{
String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
String DBURL = "jdbc:odbc:ttt";
String sql = "CREATE TABLE aTable(colum1 varchar(20) ,colum2 integer);" ;
PreparedStatement pstmt = null ;
Connection conn = null ;
try
{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL) ;
pstmt = conn.prepareStatement(sql) ;
pstmt.execute() ;
pstmt.close() ;
conn.close() ;
}
catch (Exception e)
{}
}
};
‘柒’ java中操作sql语句的方法
对类进行加锁,表示除了当前线程外的其他线程在该类中所有操作不能进行,包括静态变量和静态方法,实际上,对于含有静态方法和静态变量的代码块的同步,我们通常用此来加锁。
我想这里用之所以用这个,是为了防止不同用户(或程序)同时对数据进行更新引起数据混乱吧。
‘捌’ java 中使用sql语句
题目题设完全没表示清楚。
你是需要java里面使用还是sql里面使用啊!
如果是java的话,使用JDBC
连接数据库。
在ResultSet中得到值即可。
如果是sql的话,写存储过程即可。
‘玖’ java 执行sql语句
select username as '用户名',(case when sex=0 then '男' else '女' end) as '性别' from student;
‘拾’ java 的SQL语句
SQL语句没错,不过你的rs = db.getResult(strSQL);中的rs没定义,你定义的ResultSet的对象是re而不是rs!
改改吧!!!