现像:
用asp.net代码拼写的sql语句,关键字为"中文"时,检索结果为空!经过调查,发现asp.net代码调用以下方法时,拼成的SQL语句还是中文,也没有变成乱码,即“?”号,把拼成的sql语句放进Oracle Sql Developer也可以检索出正确的结果,并且web.config里已经加上这句话, <globalization requestEncoding="gbk" responseEncoding="gbk" culture="zh-CN" fileEncoding="gbk"/>
oracle 客户端的编码方式为:NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
oracle 服务器断的编码方式为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
public DataSet ExecuteDataSet(string query)
{
cnn = new OracleConnection(strConnectionString);
OracleCommand cmd = new OracleCommand(query, cnn);
if (query.StartsWith("SELECT") | query.StartsWith("select"))
{
cmd.CommandType = CommandType.Text;
}
else
{
cmd.CommandType = CommandType.StoredProcedure;
}
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
ds.Clear();
da.Fill(ds);
return ds;
}
小弟找了半天也没有找出结果,还请各位帮一下忙,分析一下原因!谢谢!
用asp.net代码拼写的sql语句,关键字为"中文"时,检索结果为空!经过调查,发现asp.net代码调用以下方法时,拼成的SQL语句还是中文,也没有变成乱码,即“?”号,把拼成的sql语句放进Oracle Sql Developer也可以检索出正确的结果,并且web.config里已经加上这句话, <globalization requestEncoding="gbk" responseEncoding="gbk" culture="zh-CN" fileEncoding="gbk"/>
oracle 客户端的编码方式为:NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
oracle 服务器断的编码方式为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
public DataSet ExecuteDataSet(string query)
{
cnn = new OracleConnection(strConnectionString);
OracleCommand cmd = new OracleCommand(query, cnn);
if (query.StartsWith("SELECT") | query.StartsWith("select"))
{
cmd.CommandType = CommandType.Text;
}
else
{
cmd.CommandType = CommandType.StoredProcedure;
}
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
ds.Clear();
da.Fill(ds);
return ds;
}
小弟找了半天也没有找出结果,还请各位帮一下忙,分析一下原因!谢谢!
解决方案 »
- 请教winform程序的按钮的click事件是如何激发的!
- 请教,怎么让电脑斗地主的水平提高,标题长长长!!!!!!!!!
- 一初学者的疑问 学习c#方法
- 后台生成的很多个PictureBox,如何实现点击单个的时候新开窗口显示全图?
- C#如何同时播放背景音乐和音效
- 求助,开发一个连接智能手机发送短的软件需要怎么做?
- databinding 和更新问题,各位前辈进来帮忙
- [求助] 在.net中,如何使用oledb连接Excel
- help: http错误:(407) 需要代理身份验证。
- 显示图片的问题
- 拜求c#中 自定义坐标的问题
- TcpClient.Connect(String, Int32)和TcpClient.Connect(IPAddress, Int32)的区别
、
在你的那个页面添加
<head>
<title></title>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
</head>
DataSet ds = new DataSet();
ds.Clear();
da.Fill(ds);
return ds;断点看看这里得到的值是多少。如果没得到。就是这些地方写错了
应该是你SQL语句拼接有问题
{
cnn = new OracleConnection(strConnectionString);
OracleCommand cmd = new OracleCommand(query, cnn);
if (query.StartsWith("SELECT") | query.StartsWith("select"))
...看看其中的 query 成什么了。肯定不对的
这跟ado.net有啥子关系嘛?!.net的内置的字符串,一律都是按照unicode编码的。你传递给oracle客户端驱动的命令,就是unicode编码的命令。
where columnA like N'%xx%' and ColumnB = N'xx';
注意字母N
或者考虑试一下ODP.NET?
应该不是这个原因,我在Oracle Sql Developer也可以检索出正确的结果。