消息关闭
    暂无新消息!
客户端环境 windows7  32
本机注册表字符集   
AMERICAN_AMERICA.US7ASCII
客户端 环境变量字符集 AMERICAN_AMERICA.US7ASCII

远程oracle 服务端  通过本地plsql 查询出 字符集为AMERICAN_AMERICA.US7ASCII


 那么问题来了  本机通过PLSQL 连接远程数据库  查询如:
select  * from  temp   where name='中国'    是可以查询到数据的
 通过C# 程序就查询不到数据了
 下面附上 代码

string conn = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器地址)(PORT=1521)))(CONNECT_DATA=(SID=ORCL)(SERVER=DEDICATED)));User Id=oracle;Password=oracle;Persist Security Info=True;Unicode=True;";
string sql =string.Format("select  * from  temp   where name='中国' ");
  using (OleDbDataAdapter da = new OleDbDataAdapter(SQL, conn))
            {

                try
                {
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    dataGridView1.DataSource = ds.Tables[0];
                }
                catch (OleDbException exp)
                {

                    da.Dispose();
                    throw new Exception(exp.Message);
                }
            }

11个回答

︿ 2
谁知道你连接的库是不是一个啊。
搞个测试,
你把temp中的内容改一下,把中国改成china,然后在plsql和 程序中分别访问。
如果两处都能访问到,那说明字符集是有问题的,重点找字符集的问题。
如果c#程序还没有数据,那或许访问的不是一个库,或许还有其他的问题
︿ 2
是一个库的  我用编号就可以查到那条数据用汉字就查询不到 还有你说的 字符集 目前都已经一样 我查询的数据也可以正常显示 但是用中文做条件就不可以  代码插曲oracle库汉字会是?号 数字就没有问题
︿ 2
string sql =string.Format("select  * from  temp   where name='中国' ");    -//变量 sql 小写
  using (OleDbDataAdapter da = new OleDbDataAdapter(SQL, conn))    //SQL 大写

这样没有报错??
︿ 2
自顶一贴  oracleclinet 已经重装 选在字符集也是US7ASCII 
Oracle - OraHome92
Oracle Installation Products
︿ 0
先第一不看在本地net manager中有没有要连接的服务,点中此服务先测试一下,没有的话先创建一个服务把,没有测试通过说明监听没开,或者根本链接不上就要找其他问题了。通过后在通过plsql看是否能连接,能连接后看c#连接字符串<add name="OraConnString" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ip)(PORT=端口)))(CONNECT_DATA=(SERVER=服务)(SERVICE_NAME=服务名)));User Id=用户登录名;Password=用户密码;"/>
︿ 0
上面都做了之后还不行,那就在看看服务器上有的服务端是多少位的,在看本地服务端是多少位的,不同的话先发布到iis中,看在iis中是否能正常运行