可能原因一:数据库不支持中文,或者是数据库编码格式和java代码编码格式不一致,这种情况需要修改数据库编码格式:
ALTER SYSTEM DISABLE RESTRICTED SESSION改完编码后执行sql> conn / as sysdba
sql> shutdown immediate
database closed.
database dismounted.
oracle instance shut down.
sql> startup mount
oracle instance started.
total system global area 135337420 bytes
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
database mounted.
sql> alter system enable restricted session
system altered.
sql> alter system set job_queue_processes=0
system altered.
sql> alter system set aq_tm_processes=0
system altered.
sql> alter database open
database altered.
sql> alter database character set internal_use UTF-8
sql> shutdown immediate
sql> startup
可能原因二:java代码生成插入语句的时候,已经发生乱码现象,这种只能是修改项目编码格式或者是在数据获取的时候直接转译代码编码格式来实现了。
如果你是数字或中文,你的数据应该是字符串形式的,用单引号括起来就行了。如:s.executeUpdate("insert into StudentCoure values('"+Sno+"','"+Sname+"','"+Cno+"','"+Cname+"','"+Tno+"','"+Tname+"','"+Scoure+"')")
这样你试试,如果还是不行你将sql打印出来拿到数据库中去执行下,看提示什么错误在补充。希望我的回答对你有所帮助。
两种方法:1、打开mysql目录下的my.ini或my.cnf(Linux下),找到default-character-set这一项,(在[mysql]后),改成default-character-set=gbk。这种方法一劳永逸,效果不错。2、在将数据写入数据库之前,将所有包含中文的字符串进行字符转换成ISO或UTF8(看你的mysql使用的是什么字符集了);在将含有中文的字符串从数据库里读出来后在用程序转换成GBK或GB2312。这种方法比较麻烦,每次写入和读出中文之前都必须调用这两个方法。推荐第一种方法。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)