关于数据库中的char和java中char的区别
前几天写了一个程序,关于jdbc、数据库操作的,其中数据库中使用了char类型,因为太久没使用数据据库,导致认为数据库中的char和java中的char是同一个,于是使用PreparedStatement时想找一个setChar()的方法,但是并没有找到,只能使用setObject()方法,于是将char类型放入,发现一直报错,如下:
此时还没发现是我传入的char类型有问题,于是疯狂上网搜答案,但是都没结果。
突然想到好像数据库中的char和java中的char好像不一样,
java中的char就是指一个字符,
而数据库中的char是定长字符串,
数据库中的char和Java中的char有以下区别:
-
数据类型:在数据库中,char是一种用于存储固定长度字符的数据类型,它占用固定数量的字节。而在Java中,char是一种用于表示字符的数据类型,它占用两个字节。
-
存储方式:在数据库中,char类型的数据会被存储为固定长度的字符串,不管实际存储的字符是多少,都会占用相同的字节数。这样可以确保存储的数据长度固定,但也可能导致存储空间的浪费。而在Java中,char类型的数据直接以Unicode编码形式存储,可以表示包括ASCII字符和其他语言字符在内的各种字符。
-
默认值:在数据库中,char类型的字段如果没有显式赋值,通常会使用空格字符填充。而在Java中,char类型的变量如果没有赋初值,默认值为'\u0000',即null字符。
-
字符集支持:数据库中的char类型通常支持各种字符集,如ASCII、UTF-8等,具体取决于数据库的设置。而Java的char类型则使用Unicode字符集,可以表示几乎所有的字符。
需要注意的是,char类型在数据库和Java中都不适合存储大段文本,对于较长的文本数据,应该使用数据库中的text或varchar类型,在Java中可以使用String类型。
于是在java中将char改成String类型就不报错了,真傻!