xiaojunjor 2021-12-16 11:24 采纳率: 50%
浏览 34

SqlCommand运行一个正确的sql语句,查询结果与数据库中的查询结果不一致?

sql语句如下:
SELECT DISTINCT organization_name, (SELECT C FROM [教基1001] as x where x.A = 18 AND a.organization_no = x.organization_no) as contact
,(SELECT C FROM [教基1001] as y where y.A = 19 AND a.organization_no = y.organization_no) as contactduty
FROM [教基1001] as a
ORDER BY gather_organization_no, organization_no;

在数据库中结果是正常的:

img

使用该sql语句的代码如下:
string sqlStr = string.Format(@"SELECT DISTINCT organization_name, (SELECT C FROM [教基1001] as x where x.A = 18 AND a.organization_no = x.organization_no) as contact
,(SELECT C FROM [教基1001] as y where y.A = 19 AND a.organization_no = y.organization_no) as contactduty
FROM [教基1001] as a
ORDER BY gather_organization_no, organization_no;");

            List<DuDaoSchool> lists = new List<DuDaoSchool>();
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
                SQLiteCommand com = new SQLiteCommand
                {
                    Connection = this.con,
                    CommandText = sqlStr,
                    CommandTimeout = 60 * 20,
                    CommandType = CommandType.Text
                };
                SQLiteDataReader rdr = com.ExecuteReader();

                while (rdr.Read())
                {
                    DuDaoSchool entity = new DuDaoSchool
                    {
                        Name = rdr["organization_name"].ToString(),
                        Contact = rdr["contact"].ToString(),
                        ContactDuty = rdr["contactduty"].ToString()
                    };
                    lists.Add(entity);
                }
            }

但是运行的结果,除了organization_name是正常的,另外两列都变成0了:

img

请问这是什么原因?问题出在哪?

  • 写回答

5条回答 默认 最新

  • 於黾 2021-12-16 13:22
    关注

    1.断点跟,把sqlStr的内容放到数据库里去执行,看到底是什么,是否自己拼接sql语句的过程有问题
    2.把读数据库的代码注释掉,直接给DuDaoSchool 赋值,看结果是什么,是否自己类封装的有问题,没有正确赋值
    3.以后遇到此类问题,一步一步的排除,反正一共就这么几部分,先找到问题到底出在哪一步,再说如何解决

    评论

报告相同问题?

问题事件

  • 创建了问题 12月16日