系统HIS开发ORACLE乱码解决方案(HIS库编码方式为US7ASCII)

本文介绍了一个名为HisDbConnection的Java类,该类用于连接Oracle数据库并执行SQL查询。通过加载配置文件,类实例能够获取数据库连接参数,并利用这些参数建立数据库连接。此外,文章还详细说明了如何执行特定的SELECT操作并将结果转换为包含Map对象的ArrayList。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.index.util; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Properties; import java.util.Set; import net.sf.json.JSONSerializer; public class HisDbConnection { private Connection dbConnection = null; private Statement selectPro = null; // 用于 select 操作 private Statement updatePro = null; // 用于 update 操作 private ResultSet dbResultSet = null; // 操作 select 结果集 private String driverName;// 声明oracle驱动类 private String dbHost; private String dbPort; private String dbName; private String dbUserName; private String dbPassword; private String enCoding; private Integer count; /** * 实例化DbConnection对象 * * @param host * 数据库主机(IP) * @param port * 数据库端口 * @param dName * 数据库名称 * @param uName * 用户名 * @param password * 用户密码 * @throws IOException */ public HisDbConnection() throws IOException { Properties p = new Properties(); p.load(CreatTable.class .getResourceAsStream("/com/index/util/His.properties")); driverName = "oracle.jdbc.driver.OracleDriver"; dbHost = p.getProperty("hisHost"); dbPort = p.getProperty("hisPort"); dbName = p.getProperty("hisName"); dbUserName = p.getProperty("hisUserName"); dbPassword = p.getProperty("hisPassword"); //enCoding = "?useUnicode=true&characterEncoding=utf-8&autoReconnect=true"; }// end DbConnection(...) public Connection getConnection() throws SQLException { StringBuilder urlTem = new StringBuilder(); urlTem.append("jdbc:oracle:thin:@"); urlTem.append(dbHost); urlTem.append(":"); urlTem.append(dbPort); urlTem.append(":"); urlTem.append(dbName); //urlTem.append(enCoding); String url = urlTem.toString(); System.out.println("url========="+url); try { Class.forName(driverName).newInstance(); dbConnection = DriverManager.getConnection(url, dbUserName, dbPassword); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return dbConnection; } /** * 执行专门的select操作,注意:在selectSql中的字段和fields中的个数、名称要保持一致 * * @param selectSql * 用于执行的select语句 * @param fields * 要选择的字段 * @return 含有Map的ArrayList,一条记录形成一个Map */ public ArrayList dbSelect(String selectSql, ArrayList fields) { ArrayList<Map> selectResult = new ArrayList<Map>(); Map<String, String> recordInfo; try { selectPro = dbConnection.createStatement();// 定义Statement对象 dbResultSet = selectPro.executeQuery(selectSql); while (dbResultSet.next()) { recordInfo = new HashMap<String, String>(); for (int i = 0; i < fields.size(); i++) if(dbResultSet.getString((String) fields.get(i))==null){ recordInfo.put((String) fields.get(i), ""); }else{ recordInfo.put((String) fields.get(i), new String(dbResultSet .getString((String) fields.get(i)).toString().getBytes("iso-8859-1"),"GBK" ));//这里的数据转码很重要!!! } selectResult.add(recordInfo); } System.out.println(selectResult); dbResultSet.close(); // 断开结果集 selectPro.close(); // 断开Statement对象 }catch (Exception e) { System.out.println("选择操作失败"); System.out.println("Sql = " + selectSql); e.printStackTrace(); } return selectResult; }// end dbSelect(...) }

2、HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0/ORACLE/KEY_OraDb10g_home1下NLS_LANG改为:AMERICAN_AMERICA.US7ASCII

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值