首页 新闻 搜索 专区 学院

数据访问出错

0
悬赏园豆:10 [已解决问题] 解决于 2015-12-03 11:23

现在做一个项目,终端是APP,获取数据采用的是WebService,但是,终端调用接口很不稳定,经常出现错误。服务已经发布到IIS上,在电脑上调试又没有问题,也可以正常的返回数据。终端调用时,就会出现错误。

以下是错误代码:

Column 'ID' does not belong to table .
这个ID是在查询的语句中,而且,该查询语句很简单。

服务器带宽2M,双线,阿里云服务器。使用的是.NET FrameWork4.0

请问,引起这个错误的原因可能是哪些啊!

有机物的主页 有机物 | 初学一级 | 园豆:19
提问于:2015-01-24 09:16
< >
分享
最佳答案
0

估计在 DataTable 初始化列名上,时有时没有

收获园豆:10
Yu | 专家六级 |园豆:12980 | 2015-01-24 10:48

好的,也有可能在序列化时出了异常,我在序列化的地方捕捉一下。

有机物 | 园豆:19 (初学一级) | 2015-01-24 10:50
其他回答(3)
0

看到这样的提问,就想说一声,您好好的业务经理不做,为啥非要来抢程序员的饭碗呢?

爱编程的大叔 | 园豆:30813 (高人七级) | 2015-01-24 09:55

访问方式不一样,我也不知道怎么会出这个错误!麻烦你帮忙解惑一下吧!

支持(0) 反对(0) 有机物 | 园豆:19 (初学一级) | 2015-01-24 09:56
0

应该是请求不一样~

幻天芒 | 园豆:36914 (高人七级) | 2015-01-24 09:59

终端部分是通过POST请求获取的,我不知道是不是终端那边调试的结果造成的,而且,这样的错误经常出现,就拿这个接口说,能正常返回数据的几率也就在60%左右!一般出现这样的问题,是什么原因造成的呢?我在网上找了好多这样的问题,都没法解决。

支持(0) 反对(0) 有机物 | 园豆:19 (初学一级) | 2015-01-24 10:03

@有机物: 在服务端记录一下请求日志,拿出来对比一下。。。

支持(0) 反对(0) 幻天芒 | 园豆:36914 (高人七级) | 2015-01-24 10:06

@幻天芒:记录过,参数什么都的都正常。

支持(0) 反对(0) 有机物 | 园豆:19 (初学一级) | 2015-01-24 10:09

@有机物: http://forums.asp.net/t/975548.aspx?ERROR+Column+ID+does+not+belong+to+table+ 

支持(0) 反对(0) 幻天芒 | 园豆:36914 (高人七级) | 2015-01-24 10:10

@幻天芒: 我的SQL语句是这样的:select ID,Name from tb

然后,该条SQL语句我返回的是一个DataTable,我直接将该DataTable序列化成JSON格式,序列化是调用FrameWork下面的程序集,没有问题。而且,针对这个服务,我自己创建一个WINFORM程序跑了一上午都没有问题,但是,终端(IOS)那边返回就会出现问题。

支持(0) 反对(0) 有机物 | 园豆:19 (初学一级) | 2015-01-24 10:15

@有机物: 把报错的代码贴出来吧。这实在是不好判断。

支持(0) 反对(0) 幻天芒 | 园豆:36914 (高人七级) | 2015-01-24 10:17

@幻天芒: 

public static string DataTableConvertToJson(DataTable dt)
{
string Json = "";
ArrayList arraylist = new ArrayList();
foreach (DataRow dataRow in dt.Rows)
{
Dictionary<string, object> dictionary = new Dictionary<string, object>(); //实例化一个参数集合
foreach (DataColumn dataColumn in dt.Columns)
{
dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToString());
}
arraylist.Add(dictionary); //ArrayList集合中添加键值
}
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
Json = js.Serialize(arraylist);
return Json;
}

这个是序列化的方法。

支持(0) 反对(0) 有机物 | 园豆:19 (初学一级) | 2015-01-24 10:20

@有机物: 你的 DateTable dt 咋么来的

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2015-01-24 10:25

@Yu: 

public void GetList(out bool IsSuccess,out string Json)
{
IsSuccess = false;
Json = "NULL";

try
{
string sql = string.Format("select ImagesID,ImagesPage,ImagesType,PagesID from {0} where Switch=1", Tname);

DataTable dt = DllBizBase.Get<SqlDao>().GetList(sql);//这个地方封装的是数据访问。直接返回                                                                                             DataTable

//以上的SQL语句查询是可以获取数据。

if (dt.Rows.Count > 0)//这个地方判断了DT是否为空
{
foreach (DataRow item in dt.Rows)
{
item["ImagesPage"] = Obj_RedConfig.Get_AppIndexRollImg() + item["ImagesPage"].ToString();
}

IsSuccess = true;
Json = Obj_ConvertToJson.DataTableConvertToJson(dt);
}
}
catch (Exception ex)//异常捕捉,终端POST请求时,就可能出现错误!
{
BllSys_ErrorMessage.Add("BllApp_HomeAd", "获取APP滚动图片:WSAhomeAd.asmx", "GetList", ex.Message);
}
}

支持(0) 反对(0) 有机物 | 园豆:19 (初学一级) | 2015-01-24 10:29

@有机物: 你的sql 没看到 ID 这个字段

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2015-01-24 10:33

@Yu: 这个只是一个实例,异常捕捉时,是查询出来的“ImagesID”,最初的问题提出的ID是其他的表。

支持(0) 反对(0) 有机物 | 园豆:19 (初学一级) | 2015-01-24 10:35

@有机物: 不太容易看的出来,我想的是既然你是wcf,那你可以模拟客户端的方式去请求一下。

支持(0) 反对(0) 幻天芒 | 园豆:36914 (高人七级) | 2015-01-24 13:19
1

Column 'ID' does not belong to table . 错误已经很明显了嘛。

Firen | 园豆:5385 (大侠五级) | 2015-01-25 08:29

支持(0) 反对(0) 问天何必 | 园豆:3311 (老鸟四级) | 2015-01-26 16:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册