2 u011019208 u011019208 于 2014.12.17 15:06 提问

使用C#和SQL查询数据库,查询到的与数据库不一致
            在Webservice的方法中查询得到的是{……,"NJL_StartTime":"2008","NJL_EndTime":"2008","NJL_BedNumbers":48,"NJL_DiningTableNum":48,"NJL_Revenue":48:……}
            在数据库中NJL_StartTime,NJL_EndTime这连个字段是不相同的值,NJL_BedNumbers,NJL_DiningTableNum,NJL_Revenue也是不相同的,不知道是什么原因
                  方法代码如下
        public NJLProject.Model.tb_NJL select(string NJL_ID,string NJL_Name)
    {

        StringBuilder strSQL= new StringBuilder();
        SqlDataReader sdr;
        if (NJL_ID!="")
        {
            strSQL.Append("select * from tb_NJL where NJL_ID=@NJL_ID");
            SqlParameter[] parameter =
        {
            new SqlParameter("@NJL_ID", SqlDbType.NVarChar,50),
         };
            parameter[0].Value = NJL_ID;
            sdr = DLL.SqlHelper.ExecuteReader(DLL.SqlHelper.sqlConnectionString, CommandType.Text, strSQL.ToString(), parameter);
        }
        else
        {
            strSQL.Append("select * from tb_NJL where NJL_Name=@NJL_Name");
            SqlParameter[] parameter =
        {
            new SqlParameter("@NJL_Name", SqlDbType.NVarChar,50),
         };
            parameter[0].Value = NJL_Name;
             sdr= DLL.SqlHelper.ExecuteReader(DLL.SqlHelper.sqlConnectionString, CommandType.Text, strSQL.ToString(), parameter);
        }


        NJLProject.Model.tb_NJL tb_NJL = new Model.tb_NJL();
        if (sdr.HasRows)
        {
            while (sdr.Read())
            {
                tb_NJL.NJL_ID = sdr[0].ToString();
                tb_NJL.NJL_Name = sdr[1].ToString();
                tb_NJL.NJL_Tel = sdr[2].ToString();
                tb_NJL.NJL_Linkman = sdr[4].ToString();
                tb_NJL.NJL_Street = sdr[5].ToString();
                tb_NJL.NJL_Adress = sdr[6].ToString();
                tb_NJL.NJL_BussinessEntity = sdr[7].ToString();
                tb_NJL.NJL_Level = Convert.ToInt32(sdr[8]);
                tb_NJL.NJL_Area = (float)Convert.ToDouble(sdr[9]);
                tb_NJL.NJL_StartTime = sdr[10].ToString();
                tb_NJL.NJL_EndTime = sdr[11].ToString();
                tb_NJL.NJL_BedNumbers = Convert.ToInt32(sdr[12]);
                tb_NJL.NJL_DiningTableNum = Convert.ToInt32(sdr[13]);
                tb_NJL.NJL_Revenue = (float)Convert.ToDouble(sdr[14]);
                tb_NJL.NJL_MainFood = sdr[15].ToString();
                tb_NJL.NJL_MainProject = sdr[16].ToString();
                tb_NJL.NJL_DevelopIdea = sdr[17].ToString();
                tb_NJL.NJL_Instruction = sdr[18].ToString();
                tb_NJL.NJL_Longitude = (float)Convert.ToDouble(sdr[19]);
                tb_NJL.NJL_Latitude = (float)Convert.ToDouble(sdr[20]);
            }
        }
        else
        {
            tb_NJL.NJL_ID = "未查询到结果";
            tb_NJL.NJL_Name = "未查询到结果";

        }
        return tb_NJL;
    }

4个回答

q107770540
q107770540   Ds   Rxr 2014.12.17 15:15

在这一步打上断点:
sdr= DLL.SqlHelper.ExecuteReader(DLL.SqlHelper.sqlConnectionString, CommandType.Text, strSQL.ToString(), parameter);

然后检查sqlConnectionString是不是指向你需要的数据库

再检查strSQL生成的SQL语句 在你的目标数据库上执行看看结果

u011019208
u011019208 谢谢回答。sqlConnectionString指向我需要的数据这肯定没错,因为其他的值是正确的,就是这几个值是和数据库里不相同的,SQL语句生成后我在数据库中查了一下,没错。真的是百思不得其解
3 年多之前 回复
caozhy
caozhy   Ds   Rxr 2014.12.17 15:29

首先,web service本身要做单元测试,确保它查询的逻辑是正确的。
然后,你需要检查参数传进来对不对。
像你这样什么测试也不做,调试也不调,数据库里有什么我们也不知道,直接贴出一坨代码,就很难说了。

u011019208
u011019208 谢谢指教,我之前测试时将parameter[0].Value定死为某一个ID号,执行后也是这个问题,而且我做添加功能时,这些字段输入的全是不一样的值,传输到数据库中的是相同的,不知道您有没有遇到过这种情况
3 年多之前 回复
u011019208
u011019208   2014.12.18 17:19

不好意思,是我自己粗心了,我的实体类出错了

u011019208
u011019208   2014.12.18 17:21

顺便问一下,有没有好的实体类生成器,内容多了自己写容易出错

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用c#实现简单的数据库添加和查询
1,实体类 创建一个实体类,包含id,username,password。至于数据库,不再展示怎么创建,本文章使用的Oracle数据库。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace gqb { public class User
c# Linq to sql 基本查询例子
准备工作:1.使用微软的例子数据库-Northwind,没有的可以到微软挂官网去下,附件到sql server2005数据库中               2.使用微软O/R设计器,将Northwind映射到项目中,以下实例在此环境下进行,使用vs2008以下为代码:using System; using System.Collections.Generic; using System.Linq; using System.Text; using DBClass;//此处为O/R映射Northwin
C#数据库查询和操作大全
一:C#数据库查询之数据库连接代码:     SqlConnectionobjSqlConnection=newSqlConnection("server=127.0.0.1;uid=sa;pwd=;database=test");   objSqlConnection.Open();  二:数据库的添加记录代码: inti=0;  strings1="",s2="";  
C#中利用ADO.NET连接和查询SQL数据库
using System.Data;using System.Data.SqlClient;...SqlConnection sqlCon = new SqlConnection("Data Source=(local);Initial Catalog=pubs;User ID=sa;Password= ");//Data Source为服务器;Initial Catalog为数据库;sqlC
C# 查询数据库乱码
首先,感慨一下,Sybase比较恶心!           我用的是AseClient连接Sybase, 这个包有3个文件,要在安装Sybase的时候, 选择安装选项ADO.net, 安装完Sybase后,安装目录下会有个ADO.net子目录 , ADO.net/dll  目录下有3个dll文件, 就是.NET连接数据库 必需的3个文件! 记得引用Sybase.Data.AseClient.
C#连接SQL Server并查询数据
用C#连接本地SQL Server 查询信息
C#参数化查询数据库、防止被注入
简单的登陆程序演示参数化查询方式、涉及数据库操作时切忌把用户输入的信息直接与SQL语句拼接、用户输入的信息永远是不安全的、 01 namespace DemoConsoleApplication 02 { 03     class Program 04     { 05         //数据库连接字符串、根据实际修改 06         private const
[C#] 数据库 参数化 查询
为了数据库注入漏洞, 我们在对数据库进行查询的时候, 要使用参数化查询   using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; namespace 参数化查询 { class Program {
C# 数据库查询取返回值
数据库课设期末考试结束后,就开始了为期一周的数据库课程设计。幸好这学期学习了C#,所以,对付这个还是有信心的。对于数据库的增删查该,难度并不是很大。数据库连接成功后,之后的便是SQl语句的掌握。小小的提示,对于书写SQL语句的时候,一定需要细心。在这一块,真的遇到很多问题,导致对于数据库的基本操作出错。什么列名不一致,中英文的混淆等等。所以细节决定成败,大部分情况下,这句话是没有任何错误的。正题课设
C#使用SQL数据库按照时间查询方法及注意事项
一.时间上传格式问题 开始上传时我们用的是: string sTime = DateTime.Now.ToString(); 出现问题:在时间小于10点是会出现:2014-1-16 8:55:22,而我们期望和最利于我们查询的的格式应该为:2014-01-16 08:55:22;这里有两个地方有问题,一个是月份是1,而不是01,这样我们就会出现一种情况,在你查询1月16日的数据时可能会出现11