我的SQL + C#奇怪的问题

时间:2012-05-30 07:28:36

标签: c# asp.net mysql c#-2.0 asp.net-2.0

我在每次刷新时都会在页面上出现非常奇怪的错误,但不是每次都有。

我有一个简单的页面打印出如下数据:

后端(aspx.cs)

string sql="Select * from content_mgr_multiple where category = '1' limit 0, 1";    
DataView dv = DBAccess.GetListView(sql);
this.ResultList.DataSource = dv;
this.ResultList.DataBind();

前端(C ++)

<asp:Repeater ID="ResultList" runat="server">
<ItemTemplate>
     <%#  Eval("content") %>
</ItemTemplate>
</asp:Repeater>

代码的工作方式与上面一样简单,但每次刷新都会显示以下错误。 DataBinding:'System.Data.DataRowView'不包含名称为'content'的属性。

假设我刷新页面6次。第2次,第4次和第6次都很好,但是第1次,第3次和第5次显示错误。

我尝试按照以下方式排查问题。我将代码打印出该DataSource中的列名。

string sql="Select * from content_mgr_multiple where category = '1' limit 0, 1";    
DataView dv = DBAccess.GetListView(sql);
        foreach (DataColumn dr in dv.Table.Columns)
        {
            Response.Write(dr.ColumnName + "<BR>");
        }
this.ResultList.DataSource = dv;
this.ResultList.DataBind();

在第2次,第4次和第6次刷新时,列名称将以英文打印出来。

id
category
title
titleCh
content
contentCh

在第1次,第3次和第5次刷新时,列名将以中文打印出来。

楤
捡瑥杯特
瑩瑬�
瑩瑬敃�
捯湴敮�
捯湴敮瑃�

我已经打了一段时间,请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

非常感谢你们的关心。最后,我找到了导致它的原因。正如eggyal指出的那样,它让我意识到数据库出了问题。

我有content_mgr类别表,它也持有中文标题。在该类别表中,中文字段创建为“ucs2_general_ci”。一旦我将其更改为“utf8_general_ci”,问题就解决了。