ResultSet 的updateString() 方法 的中文问题

docong 2007-10-01 01:04:23
五年前
nanman遇到的问题,不知道现在解决没。
http://topic.csdn.net/t/20010530/15/140384.html
大家都是用executeUpdate()么?

我的问题类似
ResultSet rs;
......
rs.updateString("姓名","李明");
......
rs.insertRow();
不能正确的在数据库中插入,二现实乱码,如果把“李明”改成"liming",则直接抛出异常。
pageEncoding 采用GB2312编码。
...全文
634 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
docong 2007-10-06
  • 打赏
  • 举报
回复
我仿佛清楚什么问题了,在ms sql server 2005中的nvarchar类型,不能是updateString()所对应的,把nvarchar改成text再用updateString()就正常了。
但是如果不改,在数据库里使用nvarchar(当然不能因为程序而把数据库字段类型改了),这要使用:
-------------------
updateCharacterStream
void updateCharacterStream(int columnIndex,
Reader x,
int length)
throws SQLException用字符流值更新指定列。更新方法用于更新当前行或插入行中的列值,并不会更新底层数据库;更新数据库要调用 updateRow 或 insertRow 方法。

参数:
columnIndex - 第一个列是 1,第二个列是 2,……
x - 新列值
length - 流的长度
抛出:
SQLException - 如果发生数据库访问错误
从以下版本开始:
1.2
----------------------
关于这个函数传递进数据库和读出,我还有点问题没解决,等两天弄明白了再说。
jefyjiang 2007-10-04
  • 打赏
  • 举报
回复
如果直接把“李明”改成liming还抛出错的话就应该考虑除了编码方面的其他问题了,把异常给出来看看吧
qybao 2007-10-04
  • 打赏
  • 举报
回复
String name = "李明";
name = new String(name.getBytes(), "GB2312"); //或者ISO-8859-1都试过的
这种转换在一定程度上也不是完全没用,要知道每个系统都有缺省的文件编码,你可以用System.out.println(System.getProperty("file.encoding"))看看,你的java文件如果不是Unicode的编码,那么String name = "李明"; 就不是unicode字符串,你可以用notepad写一个文件,保存时选择不同的编码保存,然后你用java读出文件试试看你就知道了,为什么有时候需要把properties文件用ascii2unicode转换就是一个原因。
String name = "李明"; //这是系统缺省文件编码(前提是你的java文件没有作过任何编码转换,有的IDE是可以选择编码的,像eclipse)
name = new String(name.getBytes("GB2313"), "GB2312"); //用这种方式转换,这其中的意思自己体会吧,新的name是GB2312编码

LZ要确认一下你的数据库的编码?直接在数据库端用insert插入数据,在客户端读出来的是否能正常显示?
把“李明”改成"liming"抛出了什么异常?
我没有环境,无法测试,只能通过LZ的提供的信息分析,所以可能的话,LZ还是多提些错误情报吧





docong 2007-10-04
  • 打赏
  • 举报
回复
老大,难道你们用updateString是正常的么?
aidejieti 2007-10-04
  • 打赏
  • 举报
回复
我啊,.要好好的学习数据库了,..~~
docong 2007-10-04
  • 打赏
  • 举报
回复
但是直接用insert into
然后executeUpdate就是正常的,这是为什么呢?
docong 2007-10-04
  • 打赏
  • 举报
回复
传入的表格格式数据流(tds)远程过程调用(RPC)协议流不正确
南南北北 2007-10-04
  • 打赏
  • 举报
回复
确定你的服务器和数据库的默认编码一致并且支持中文,否则使用PreparedStatement更新吧。

至于new String(num.getBytes(),"GBK");这些方法就不要试了,不会有用的。

如果改成"liming"会抛异常,异常是什么?
docong 2007-10-04
  • 打赏
  • 举报
回复
兄弟,没你那种写法哦!
下面这种方法我早就试过了,难道你们从来都没有用过,updateString这类函数么?
String name = "李明";
name = new String(name.getBytes(), "GB2312"); //或者ISO-8859-1都试过的
String num = "8888";
num = new String(num.getBytes(),"GB2312");
rs.updateString("姓名",name); //对结果集做更新操作。
rs.updateString("学号",num);
qybao 2007-10-03
  • 打赏
  • 举报
回复
have a try

String field = "姓名";
String name = "李明";
...
field = new String(field.getByte("xxx"), "yyy"); //进行转码试试
name = new String(name.getByte("aaa"), "bbb"); //进行转码试试
...
rs.updateString(field, name);
...


docong 2007-10-03
  • 打赏
  • 举报
回复
难道现在没有人才了?
docong 2007-10-01
  • 打赏
  • 举报
回复
意思很简单:
就是用rs.updateString("姓名","李明");
插入数据进数据库,数据变成了乱码,无法再正常读出
majia1hao 2007-10-01
  • 打赏
  • 举报
回复
不大明白楼主说的是什么问题

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧