亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: string 有無字節(jié)數限制請教 [打印本頁]

作者: Ilovemugua    時間: 2006-04-21 15:25
標題: string 有無字節(jié)數限制請教
我在java插informix數據庫時碰到Statement length exceeds maximum錯誤,插數據庫的某個字段數據很大,我懷疑是string類型字節(jié)數有限制,請各位大蝦幫忙解決下。謝謝。

[ 本帖最后由 Ilovemugua 于 2006-4-21 15:57 編輯 ]
作者: tong0245    時間: 2006-04-21 15:29
老實說我看你的問題我暈菜
作者: Ilovemugua    時間: 2006-04-21 15:55
標題: 回復 1樓 Ilovemugua 的帖子
java中string類型應該是有大小限制的吧,那這個極限是由什么來決定的啦,會不會受到環(huán)境的影響啦,請各位大蝦指點一二。
作者: tong0245    時間: 2006-04-21 16:15
你數據庫字段什么類型的啊
作者: tong0245    時間: 2006-04-21 16:22
你是工作還是學習啊 ??
作者: Ilovemugua    時間: 2006-04-21 16:26
標題: 回復 5樓 tong0245 的帖子
字段是varchar,不過我覺得與表字段大小應該無關,應該是string的空間大小有關
作者: Ilovemugua    時間: 2006-04-21 16:43
標題: 回復 7樓 tong0245 的帖子
你所說不對,我?guī)熘衯archar最大255,但是插表時送的字段大于255的話她會自動截取前面255位插表的啊。我是在java中執(zhí)行插表sql語句的,字段都是string類型,其中有個字段賦值過大,好像超出了string的最大限制,所以出錯了。我試了試我的string最大容量是32768字節(jié),現在我想知道的是string的最大容量是固定的,還是受什么因素或環(huán)境限制,又或者說怎么樣才能知道string的最大容量啦?
作者: fxf_china    時間: 2006-04-21 16:51
Java決定了每種主要類型的大小。就象在大多數語言里那樣,這些大小并不隨著機器結構的變化而變化。這種大小的不可更改正是Java程序具有很強移植能力的原因之一。
作者: tong0245    時間: 2006-04-21 16:54
原帖由 Ilovemugua 于 2006-4-21 16:43 發(fā)表
你所說不對,我?guī)熘衯archar最大255,但是插表時送的字段大于255的話她會自動截取前面255位插表的啊。我是在java中執(zhí)行插表sql語句的,字段都是string類型,其中有個字段賦值過大,好像超出了string的最大限制,所 ...

你看看拋出是什么異常 我剛才帖子里邊有不好聽的話。 那個應該是SQLException
對一個varchar字段來說 對超長值 是否截取或者拋出異常和具體數據庫相關。
但是我告訴你數據庫的字符或者 字符串類型支持的長度一定小于java String的能力。
如果你在sql語句中超出的話 會拋出異常 明白嗎
你問string 最大多長根本 無助與你解決問題。你一開始就把問題想錯了
我問你類型就是想知道你保存數據的方式是通過大對象 還是普遍的char類型

[ 本帖最后由 tong0245 于 2006-4-21 16:57 編輯 ]
作者: tong0245    時間: 2006-04-21 17:03
我告訴你個最簡單確實問題的方法 你把sql語句打印出來
拷貝出來到一個 sql ide環(huán)境執(zhí)行出錯了 是數據庫相關問題 否則是java問題
我認為數據庫問題
另外你既然 只是需要前255個字符 你為什么不截??
其實如果是java String的問題 應該在賦值的時候就拋出了 。這些都是很容易判斷

[ 本帖最后由 tong0245 于 2006-4-21 17:08 編輯 ]
作者: 艾斯尼勒    時間: 2006-04-21 21:42
原帖由 tong0245 于 2006-4-21 17:03 發(fā)表
如果是java String的問題 應該在賦值的時候就拋出了  


表示強烈認同
作者: tong0245    時間: 2006-04-21 21:46
我和他在短信里邊說了就是sql太長了 還不不信
java String愿意的可以填滿內存
作者: wobushiwo    時間: 2006-04-21 22:35
一個String,最多能裝的 2147483647 個字節(jié)

假如char的高位也利用的話,能有 34359738352 個字節(jié) ,但是不能直接用 getBytes("編碼方式")

得到 34359738352 個字節(jié) ,需要先得到每一個個的char,再分高低位。。。

想挑戰(zhàn)極限嗎?
作者: tong0245    時間: 2006-04-21 22:57
原帖由 wobushiwo 于 2006-4-21 22:35 發(fā)表
一個String,最多能裝的 2147483647 個字節(jié)

假如char的高位也利用的話,能有 34359738352 個字節(jié) ,但是不能直接用 getBytes("編碼方式")

得到 34359738352 個字節(jié) ,需要先得到每一個個的char, ...

但是java String 長度受限于jvm內存  還有他的size 他用int做為計數器變量的類型
但是我說的不太對 string還是有長度限制的 因為計算size用的是int  受限于這個了
當int溢出就完蛋了
說話要注意啊 我剛剛看過源碼 事情沒有你說的那么復雜 好多數據庫的clob是你說的那樣的
作者: wobushiwo    時間: 2006-04-21 23:03
jvm有沒限制不清楚,不過就按源碼來看

char[int]

1 數組極限肯定不會超過 2147483647
2 假如存滿了2147483647個char,char 是 16 位,假如是按支持雙字節(jié)的 編碼 來 getBytes 的話(比如 getBytes("GBK")),那得到的 bytes[] 肯定是超了的
作者: ginew    時間: 2006-04-24 14:58
String.length() 返回的是一個int。不知道這個信息對你有沒有幫助。
作者: 艾斯尼勒    時間: 2006-04-24 15:26
長知識。。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2