同样一条SQL语句,为啥挪到C#里返回零行记录

谁学逆向工程 2016-01-07 11:30:44
        private void simpleButton5_Click(object sender, EventArgs e)
{
pDs = m_DB.GetData("select * from( " +
"SELECT mid( zldwdm,1,12) as zldwdm2,dlbm,sum(dlmj) from dltb_基础计算表结构 " +
"where dlbm like '01*' or dlbm like '02*' or dlbm like '03*' group by mid( zldwdm,1,12),dlbm " +

"union all " +

"SELECT mid( zldwdm,1,9) as zldwdm2,dlbm,sum(dlmj) from dltb_基础计算表结构 " +
"where dlbm like '01*' or dlbm like '02*' or dlbm like '03*' group by mid( zldwdm,1,9),dlbm " +

"union all " +

"SELECT mid( zldwdm,1,6) as zlwdmdm2, dlbm,sum(dlmj) from dltb_基础计算表结构 " +
"where dlbm like '01*' or dlbm like '02*' or dlbm like '03*' group by mid( zldwdm,1,6),dlbm) " +
"order by zldwdm2");

int hang = pDs.Tables[0].Rows.Count;
for (int i = 0; i < hang; i++)
{
string strSQL = "insert into 土地利用现状二级分类面积汇总表 (zldwdm, " +
pDs.Tables[0].Rows[i][1].ToString()+" ) values (" +
pDs.Tables[0].Rows[i][0].ToString() + ", " +
pDs.Tables[0].Rows[i][2].ToString() + ")";
}


}


上面在C#里返回0行,然后循环语句也就没机会执行了。但是这个语句在 access 里返回很多行

...全文
523 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmidl 2016-01-11
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
既然你们的代码不会错,那么你的意思就是说微软的代码不如你们的代码更加久经考验呗。那就换酒精考验的 java 吧。
微软的代码还真不是绝对没问题的。 随数据库一同安装的自带的图形客户端都比微软的odb或者ado好用。我碰到过好多次同样的sql语句。微软就是痿软了,人家自家的工具就可以返回数据。微软拿人家的函数做了个二次封装为保持微软的统一,这一封装就有可能出问题。
Guzg 2016-01-11
  • 打赏
  • 举报
回复
貌似最外层的select * from () '别名',少了个别名
puler 2016-01-08
  • 打赏
  • 举报
回复
先用一个简单SELECT测试一下表,这样好一步一步判断问题
xuzuning 2016-01-07
  • 打赏
  • 举报
回复
你的 SQL 指令是错的! 你执行的是形如这样的指令 select * from( select 。。。) order by zldwdm2 按规则,计算表是需要有别名的,access 也不例外 至少要这样 select * from ( select 。。。) T order by zldwdm2
江南小鱼 2016-01-07
  • 打赏
  • 举报
回复
GetData蒙蔽了你的双眼,debug见分晓。
  • 打赏
  • 举报
回复
既然你们的代码不会错,那么你的意思就是说微软的代码不如你们的代码更加久经考验呗。那就换酒精考验的 java 吧。
谁学逆向工程 2016-01-07
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
抛出异常并不一定就是sql错误造成的
封装的类、函数都是久经考验,以前都没有问题的
xdashewan 2016-01-07
  • 打赏
  • 举报
回复
抛出异常并不一定就是sql错误造成的
qq_33669630 2016-01-07
  • 打赏
  • 举报
回复
SQL语句不同的系统有些微小的语法区别,你先写个基本语句试试,然后逐渐加条件找原因
谁学逆向工程 2016-01-07
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
GetData里的代码,是不是抛错了被catch住又什么都不做
这条语句有抛出异常的可能吗,在 access 里是没问题的呀
xdashewan 2016-01-07
  • 打赏
  • 举报
回复
GetData里的代码,是不是抛错了被catch住又什么都不做
xdashewan 2016-01-07
  • 打赏
  • 举报
回复
分几次测试,去掉外层select,去掉union,执行看有没结果,有的话先套union再套select,没有的话把group也去掉,再没有把where也去了
谁学逆向工程 2016-01-07
  • 打赏
  • 举报
回复
引用 17 楼 BitCoffee 的回复:
like '01*' -> like '01%' 类似于这种*换成%
这个有效果,返回了163
BitCoffee 2016-01-07
  • 打赏
  • 举报
回复
like '01*' -> like '01%' 类似于这种*换成%
谁学逆向工程 2016-01-07
  • 打赏
  • 举报
回复
引用 15 楼 xdashewan 的回复:
那么问题基本就是你的sql,sum(dlmj)加个别名试试
加了3个as语句也返回0 sum(dlmj) as mj
xdashewan 2016-01-07
  • 打赏
  • 举报
回复
那么问题基本就是你的sql,sum(dlmj)加个别名试试
谁学逆向工程 2016-01-07
  • 打赏
  • 举报
回复
引用 13 楼 xdashewan 的回复:
你尝试下SELECT * from dltb_基础计算表结构,如果有记录那么基本定性为sql错,如果还是没记录,那么肯定是连接什么的问题
SELECT * from dltb_基础计算表结构 5676 行
xdashewan 2016-01-07
  • 打赏
  • 举报
回复
引用 12 楼 xiaoyuanyuan2009 的回复:
还有啥其他可能
你尝试下SELECT * from dltb_基础计算表结构,如果有记录那么基本定性为sql错,如果还是没记录,那么肯定是连接什么的问题
谁学逆向工程 2016-01-07
  • 打赏
  • 举报
回复
引用 11 楼 xdashewan 的回复:
检查下pConn连接的库是否正确,是否可能access文件搞错了
还有啥其他可能
xdashewan 2016-01-07
  • 打赏
  • 举报
回复
引用 10 楼 xiaoyuanyuan2009 的回复:
        public DataSet GetData(string strSQL)
        {
            OleDbCommand pSQLCmd = new OleDbCommand(strSQL, pConn);
            OleDbDataAdapter pSQLAdapter = new OleDbDataAdapter(strSQL, pConn);
            pSQLAdapter.SelectCommand = pSQLCmd;
            DataSet pDs = new DataSet();
            pSQLAdapter.Fill(pDs);
            return pDs;
        }
检查下pConn连接的库是否正确,是否可能access文件搞错了
加载更多回复(3)

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧