oracle mysql us7acsii_C#如何解决读写us7acsii字符集的oracle数据库的乱码

oracle使用US7ASCII字符集在存储。

没有安装oralce client的客户端,我把一些必要的dll拷贝到自己程序下(oci.dll,oraociei11.dll这些),是可以访问数据库的。

使用微软的oledb驱动的方式访问数据库。

连接字符串如下:

Provider=msdaora;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.18.100.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORACLE)));User Id=123;Password=123;

程序代码如下:

System.Environment.SetEnvironmentVariable("NLS_LANG", "American_America.US7ASCII",EnvironmentVariableTarget.Process);

string connStr = ConfigurationManager.ConnectionStrings["Hosp"].ConnectionString;

using (OleDbConnection conn = new OleDbConnection(connStr))

{

conn.Open();

StringBuilder sqlSb = new StringBuilder();

sqlSb.Append("insert into HHRIS.R_BLREQUSITION (HISID,PHOTONO,STUDYID,PATNAME,Sex,Age,");

sqlSb.Append("LODGESECTION,LODGEDOCTOR,INHOSPITALNO,BEDNO,DIAGNOSIS,CHECKDATE,CHECKDOCTOR,REPORTDOCTOR,");

sqlSb.Append("RESULT,REPORTDATE,CLASSNAME,PARTOFCHECK,HisExamNo)");

sqlSb.Append("values (?,?,?,?,?,?,");

sqlSb.Append("?,?,?,?,?,?,?,?,");

sqlSb.Append("?,?,?,?,?)");

OleDbParameter[] parameters = new OleDbParameter[]{

new OleDbParameter("HisId",SqlHelper.ToDbValue(ecgEntity.PatientId)),

new OleDbParameter("PhotoNo",photoNo),

new OleDbParameter("StudyId",studyId),

.......

另外还有一个update的函数,代码与以上类似

也是先设定环境变量后的操作

问题如下:

插入中文到数据库中,有的时候是正常的,有的时候是乱码(显示为问号)。

我发现错误后,update一次,又能正常update成中文。

所以我很不解其原因?

请问:

要保持正确的insert,update数据库的话,应该如何操作?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值