A. 高手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就不成了,别的机器好像还不太一样。
所以这和机器也有关系。可以自己编写程序进行测试,看测试结果就知道了,这是最可靠的办法。
B. java 很长一段sql怎么写在一行可以带换行的
您好,提问者: 估计山颤是您多加了ln了。比如System.out.println();这个其实就是一行。public static void main(String[] args){for(int i = 0; i < 8; i++){System.out.println("■逗携败□"隐老);}}
C. 在java中写一段很长的SQL语句该怎么写 我这个该怎么改
说个简单点的办法,你这个SQL语句别分行,比如你的sql语句是这样的。
select "+ uid +"from " +t_user_log +" where name = "+ name+ “and date between '”+
date +"'"
写成类似于这种的。
你这SQL语句我看着没什么问题,你扔到你数据库里看看能不能查出来。我拼SQL语句一直都是先写好SQL语句,然后把条件换成“”.双引号和括号再做处理,你这么走几遍就能看出是哪有问题了。
D. SQl语句过长问题解决方案
其实也很简单,不用VARCHAR2用LOG或BLOG单无储蓄为>=2GB应该是够的。
E. 怎么解决java常量字符串过长
String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE = 2^31 - 1 = 2147483647。又由于java中简伏游的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。
不过这仅仅是对字符串变量而言,如果是字符串常量,如“abc”、”1234”之类写在代码中的字符串str,那么允许的最大长度取决于字符串在常量池中的存储大小,也就是字符串在class格式文件中的存储格式:
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
u2是无符号拦销的16位整数,因此理论上允许的string str的最大长度是2^16-1=65535。然而实际测试表明,允许的最大长度仅为65534,超过就编译错误。
F. getResult java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 数据源名称过长
你在获取Connection的时候那个数据源地址写的有问题,检查下