‘壹’ java和sql语句拼接问题
因为拼接字符串没有预编译,像mybatis会预编译,当你传入一个字符串的时候会自动给你添加上'',表示这是一个字符串,但是你手动字符串拼接的时候就需要自己执行mybatis的这个操作,在字符串上添加 ''。最后sql += " and id='"+ id + "'"相当于sql =sql + " and id='"+ id + "'";就是一个字符串简单拼接
‘贰’ 在JAVA中的SQL语言
Transact_SQL小手册
*******************Transact_SQL********************
--语 句 功 能
--数据操作
SELECT --从数据库表中检索数据行和列
INSERT --向数据库表添加新数据行
DELETE --从数据库表中删除数据行
UPDATE --更新数据库表中的数据
--数据定义
CREATE TABLE --创建一个数据库表
DROP TABLE --从数据库中删除表
ALTER TABLE --修改数据库表结构
CREATE VIEW --创建一个视图
DROP VIEW --从数据库中删除视图
CREATE INDEX --为数据库表创建一个索引
DROP INDEX --从数据库中删除索引
CREATE PROCEDURE --创建一个存储过程
DROP PROCEDURE --从数据库中删除存储过程
CREATE TRIGGER --创建一个触发器
DROP TRIGGER --从数据库中删除触发器
CREATE SCHEMA --向数据库添加一个新模式
DROP SCHEMA --从数据库中删除一个模式
CREATE DOMAIN --创建一个数据值域
ALTER DOMAIN --改变域定义
DROP DOMAIN --从数据库中删除一个域
--数据控制
GRANT --授予用户访问权限
DENY --拒绝用户访问
REVOKE --解除用户访问权限
--事务控制
COMMIT --结束当前事务
ROLLBACK --中止当前事务
SET TRANSACTION --定义当前事务数据访问特征
--程序化SQL
DECLARE --为查询设定游标
EXPLAN --为查询描述数据访问计划
OPEN --检索查询结果打开一个游标
FETCH --检索一行查询结果
CLOSE --关闭游标
PREPARE --为动态执行准备SQL 语句
EXECUTE --动态地执行SQL 语句
DESCRIBE --描述准备好的查询
---局部变量
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
---全局变量
---必须以开头
--IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' --打印字符串'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'
--CASE
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end
--WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x --打印变量x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c --打印变量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
--WAITFOR
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select * from employee
***SELECT***
select *(列名) from table_name(表名) where column_name operator value
ex:(宿主)
select * from stock_information where stockid = str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%' --------- ([]指定值的范围)
stockname like '[^F-M]%' --------- (^排除指定范围)
--------- 只能在使用like关键字的where子句中使用通配符)
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
order by 1,2 --------- by列号
stockname = (select stockname from stock_information where stockid = 4)
--------- 子查询
--------- 除非能确保内层select只返回一个行的值,
--------- 否则应在外层where子句中用一个in限定符
select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复
select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
select stockname , "stocknumber" = count(*) from table_name group by stockname
--------- group by 将表按行分组,指定列中有相同的值
having count(*) = 2 --------- having选定指定的组
‘叁’ 高手java里拼sql语句的最大长度是多少
在java中sql的数据类型一般是String或StringBuffer。
java里拼sql语句的最大长度,也就是String或StringBuffer容纳字符的最大个数。
String 的最大长度:
我们可以使用串接操作符得到一个长度更长的字符串,那么,String 对象最多
能容纳多少字符呢?查看String的源代码我们可以得知类String中是使用域 count 来
记录对象字符的数量,而count 的类型为 int,因此,我们可以推测最长的长度
为 2^32,也就是4G。
不过,我们在编写源代码的时候,如果使用 Sting str = "aaaa";的形式定义一个字
符串,那么双引号里面的ASCII 字符最多只能有 65534 个。为什么呢?因为在class
文件的规范中, CONSTANT_Utf8_info 表中使用一个16 位的无符号整数来记录字
符串的长度的,最多能表示 65536 个字节,而Java class 文件是使用一种变体UTF-8
格式来存放字符的,null 值使用两个字节来表示,因此只剩下 65536- 2 = 65534
个字节。也正是变体UTF-8 的原因,如果字符串中含有中文等非ASCII 字符,那么
双引号中字符的数量会更少(一个中文字符占用三个字节)。如果超出这个数量,在
编译的时候编译器会报错。
而stringBuffer的最大长度:
一般认为没有限制,直到内存溢出为止。
public static void main(String[] args) {StringBuffer str = new StringBuffer();for (int i = 0; i < 3640; i++) {str.append("0");}System.out.println(str);//这里输出了3640个0str.append("0");System.out.println(str);//但是这里输出的却是空格?}我的机器上是多于3640就不成了,别的机器好像还不太一样。
所以这和机器也有关系。可以自己编写程序进行测试,看测试结果就知道了,这是最可靠的办法。
‘肆’ java sql数据库查询语句怎么写
使用java的jdbc来连接数据库
如连接mysql(其余数据库类似),引入mysql-connector-java-5.1.24.jar包到工程中,在程序中可以这样连接mysql:
String Server = 你服务器的ip;
String User = 你的账号名;
String Password = 你的密码;
String Database = 你的数据库名;
// 驱动程序名
String driver = "com.mysql.jdbc.Driver";
// URL指向要访问的数据库名scutcs
String url = "jdbc:mysql://"+Server+"/" + Database;
// 加载驱动程序
Class.forName(driver);
// 连续数据库
Connection conn = DriverManager.getConnection(url, User, Password);
if(!conn.isClosed())
System.out.println("Succeeded connecting to the Database!");
// statement用来执行SQL语句
Statement statement = conn.createStatement();
String sql = "select ** from ** where **";
ResultSet rs = statement.executeQuery(sql);
//假设数据库表只有两个属性值,一个属性值为String类型,另一个为Int类型
while(rs.next()) {
System.out.println(rs.getString(1)+" " +rs.getInt(2) );
}