『壹』 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) );
}