我用的是jdbc和存储过程来实现方位sqlserver的我字段chinese为nvachar,num为int发现了两个问题:
1:更新时候代码为
cstmt = connection.prepareCall("{ call update(?) }");
cstmt.setObject(1,"汉字");
cstmt.executeUpdate();
CREATE PROCEDURE update
@chinese nvarchar(50)
AS
UPDATE language
Set chinese= @chinese
WHERE num = 1
GO
问题:我发现这样无法支持汉字,更新到数据库中全是乱码
2:另外取数据的时候用的getObject把他们放在list中
ResultSet rs = stmt.executeQuery("select chinese from language WHERE num = 1");
List list = new ArrayList();
while(rs.next()){
int i = rs.getMetaData().getColumnCount();
Object object[] = new Object[i];
for(int j=0;j<i;j++){
object[j] = rs.getObject(j+1);
}
list.add(object);
}
问题:我发现当字段设为nvarchar时候用getObject根本取不到字符串的数据,但只有nvarchar支持中文,并且这两个方法是公用的,存取数据时候必须要写两个公用方法,这个方法该怎么改呢?大侠们帮忙看看吧,我要实现这两个功能该用什么方法呢?
问题一:
try{
String str =new string("汉字".getBytes(),"iso-8895-1");
}catch(Exception e){}
然后把str存到数据库就会显示完整的中文.
问题二:
用varchar 也可以存中文啊,不知道楼主怎么说不可以,我一般都用的varchar