c#开发连接oracle数据库查询条件中含汉字但是查不到数据
2014-06-18 08:41
731 查看
被这个问题纠结了一晚上,上网查了很多帖子,有说本地Oracle字符集问题的,有说连接字符串中加入“Unicode=true”的,感觉都不对,验证了也确实不能解决问题。
问题描述:
DBConn.cs
==============================
Gateway.cs
==============================
问题分析解决:
1. 首先感觉是自己开发环境的问题,于是将编译好的可执行程序拷贝到其他计算机测试,都提取不到结果。
2. 感觉是连接字符串的问题,于是换成下面方式,改用Oracle客户端配置,问题依旧。
3. 最后觉得是不是Provider的问题,于是换成MSDAORA,问题得到了解决。
4. 回过头来把字符串方式的Provider也改过来,也成功了。
5. 查阅资料
OleDB连接驱动有MSDAORA和OraOLEDB.Oracle,他们分别由微软和Oracle提供。
可能是OraOLEDB的问题。
参考:http://blog.csdn.net/whuarui2010/article/details/9456741
问题描述:
DBConn.cs
==============================
OleDbConnection conn = new OleDbConnection("Provider=OraOLEDB.Oracle;Server=" + Properties.Settings.Default.ServerAddress + ";Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP) (HOST = " + Properties.Settings.Default.ServerAddress + ")(PORT = 1521))) (CONNECT_DATA =(SERVICE_NAME = " + Properties.Settings.Default.DbServiceName + "))); User ID=" + userID + ";Password=" + userPWD + ";");
Gateway.cs
==============================
public DataSet GetPatientBasicInfo(string startDate,string endDate) { DataSet mydataset = new DataSet(); using (OleDbConnection conn = Models.EHR.DBConnManager.GetConnServer()) { conn.Open(); string sqlStr = @"SELECT * FROM TABLE1 WHERE COLUMN1=?"; using (OleDbCommand cmd = new OleDbCommand(sqlStr, conn)) { cmd.Parameters.Add("column1", OleDbType.VarChar).Value ="张三"; OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); adapter.Fill(mydataset); } } return mydataset; }
问题分析解决:
1. 首先感觉是自己开发环境的问题,于是将编译好的可执行程序拷贝到其他计算机测试,都提取不到结果。
2. 感觉是连接字符串的问题,于是换成下面方式,改用Oracle客户端配置,问题依旧。
OleDbConnection conn = new OleDbConnection("Provider=OraOLEDB.Oracle;Data Source=TESTDB; User Id=" + userID + ";Password=" + userPWD + ";Unicode=true;"
3. 最后觉得是不是Provider的问题,于是换成MSDAORA,问题得到了解决。
OleDbConnection conn = new OleDbConnection("Provider=MSDAORA;Data Source=TESTDB; User Id=" + userID + ";Password=" + userPWD + ";Unicode=true;"
4. 回过头来把字符串方式的Provider也改过来,也成功了。
OleDbConnection conn = new OleDbConnection("Provider=MSDAORA;Server=" + Properties.Settings.Default.ServerAddress + ";Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP) (HOST = " + Properties.Settings.Default.ServerAddress + ")(PORT = 1521))) (CONNECT_DATA =(SERVICE_NAME = " + Properties.Settings.Default.DbServiceName + "))); User ID=" + userID + ";Password=" + userPWD + ";");
5. 查阅资料
OleDB连接驱动有MSDAORA和OraOLEDB.Oracle,他们分别由微软和Oracle提供。
可能是OraOLEDB的问题。
参考:http://blog.csdn.net/whuarui2010/article/details/9456741
相关文章推荐
- C#连接Oracle数据库查询数据
- c#连接oracle数据库,查询数据
- C#连接Oracle数据库(直接引用dll使用),查询数据
- 关于.net平台开发程序连接oracle数据库查询语句中包含汉字的问题
- C#连接SQL多条件复杂查询
- 极限挑战—C#+ODP 100万条数据导入Oracle数据库仅用不到1秒
- C# 连接ORACLE数据库,执行查询提示“算术运算导致溢出。”
- c#中listview显示数据(连接oracle数据库)
- ArcGIS Engine + C# 实例开发教程:第八讲 属性数据表的查询显示
- C#(.NET)数据访问连接、查询、插入等操作的封装类
- C#用Oledb查询Excel某个sheet中的数据——按多个条件查询
- php连接oracle数据库及查询数据的方法
- Oracle查询条件带有汉字时查询不出数据的原因
- 开发日志:hql 使用set数据条件查询
- c#中listview显示数据(连接oracle数据库)
- C#(.NET)数据访问连接、查询、插入等操作的封装类
- 数据值为NULL,导致条件查询不到正确结果,ISNULL函数的使用解决问题
- .Net连接Oracle数据库(查询、添加数据)
- SQL----多张表连接查询,只查出符合条件的数据
- 数据查询基础和C#连接数据库语句