BBS水木清华站∶精华区
发信人: yangruijun (nickname), 信区: Java
1.我的jdbc选出的结果中文显示乱码,而西文可以(applet中).
2.我的jdbc可以查询数据,也可以添加和删除表,但是不能向表中插入数据。
各位仁兄如有解决的原代码或思路请提供,谢谢!
附本人邮件地址:ruijun@ice.edu.cn
发信人: Sailors (GiGi), 信区: Java
【 在 yangruijun (nickname) 的大作中提到: 】
∶ 1.我的jdbc选出的结果中文显示乱码,而西文可以(applet中).
∶ 2.我的jdbc可以查询数据,也可以添加和删除表,但是不能向表中插入数据。
∶ 各位仁兄如有解决的原代码或思路请提供,谢谢!
∶ 附本人邮件地址:ruijun@ice.edu.cn
你的第一个问题我还没有碰到过,第二个问题我想应该是这样:
stmt.executeUpdate("INSERT INTO tablename VALUE(***)");
其中,***应该是立即数,如果你要用变量名,则为:
stmt.executeUpdate("INSERT INTO tablename VALUE("+valuable1+","+valuable2+","+
...+","+valuableN+")");
发信人: manpo (来来), 信区: Java
由于数据库的编码方式与Java的编码方式不一致(如Sybase和DB2,
需要进行转换,一个例程(Transfer DB2):
public void executeQuery(String query) {
if (connection == null || statement == null) {
System.err.println("There is no database to execute the query.");
return;
}
try {
byte[] b1= query.getBytes();
query=new String(b1,"cp437");
resultSet = statement.executeQuery(query);
metaData = resultSet.getMetaData();
int numberOfColumns = metaData.getColumnCount();
columnNames = new String[numberOfColumns];
// Get the column names and cache them.
// Then we can close the connection.
for(int column = 0; column < numberOfColumns; column++) {
columnNames[column] = metaData.getColumnLabel(column+1);
}
// Get all rows.
rows = new Vector();
while (resultSet.next()) {
Vector newRow = new Vector();
for (int i = 1; i <= getColumnCount(); i++) {
String s="";
if ((isStringClass(i-1)) && (resultSet.getObject(i)!=null) ){
try{
byte[] b= ((String)resultSet.getObject(i)).getBytes("cp437");
s=new String(b);
}catch(UnsupportedEncodingException e){
System.out.println("代码页转换错误");
}catch(NullPointerException e){
}
newRow.addElement(s);
}else
newRow.addElement(resultSet.getObject(i));
}
rows.addElement(newRow);
}
// close(); Need to copy the metaData, bug in jdbc:odbc driver.
fireTableChanged(null); // Tell the listeners a new table has arrived.
}
catch(UnsupportedEncodingException e){
System.out.println("代码页转换错误");
}catch (SQLException ex) {
System.err.println(ex);
}
}
【 在 Sailors (GiGi) 的大作中提到: 】
∶ 你的第一个问题我还没有碰到过,第二个问题我想应该是这样:
∶ stmt.executeUpdate("INSERT INTO tablename VALUE(***)");
其中,***应该是立即数,如果你要用变量名,则为:
∶ stmt.executeUpdate("INSERT INTO tablename VALUE("+valuable1+","+valuable2+","+
∶ ...+","+valuableN+")");
BBS水木清华站∶精华区