服务器错误(某列不属于表Table)

dafei198607 2010-11-02 09:47:26
网站是asp.net开发,发布于Win2003系统,数据库是sql2005
发布运行一段时间后,所有的查询报错,类似于
“列Pid不属于表Table”、“列Sid不属于表Table”,服务器重启之后就正常了
一段时间后,又出现这种问题
...全文
388 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdqlaccp 2010-11-25
  • 打赏
  • 举报
回复
有可能是你有些SQL语没有查询所有列,但你在实体映射时且用到了这列,导致的,
比如你的SQL语句是 select a from table1。而你与类映射时 dr["a"],dr["b"].
dafei198607 2010-11-02
  • 打赏
  • 举报
回复
如果保持一个connection不变,有没有其他的解决方法,
cpp2017 2010-11-02
  • 打赏
  • 举报
回复
不能,并发的时候会出问题.
dafei198607 2010-11-02
  • 打赏
  • 举报
回复
如果保持一个connection不变,把SqlDataAdapter dispose一下的话能不能解决这个问题。
cpp2017 2010-11-02
  • 打赏
  • 举报
回复
你整个系统就用了一个连接,肯定会出问题,建议改成短连接,用完立即关闭.
dafei198607 2010-11-02
  • 打赏
  • 举报
回复

private static SqlConnection connection;
public static SqlConnection Connection
{
get
{
string connectionString =EncrypString.Decryp(ConfigurationManager.ConnectionStrings["MCConnectionString"].ConnectionString);
if (connection == null)
{
connection = new SqlConnection(connectionString);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}
cpp2017 2010-11-02
  • 打赏
  • 举报
回复
你的Connection是哪来的?全局的?有没有关闭?cmd是没有关闭的
dafei198607 2010-11-02
  • 打赏
  • 举报
回复
慕白兄说的有道理,
public static IList<Message> GetMessagesBySql(string safeSql)
{
List<Message> list = new List<Message>();

try
{
DataTable table = DBHelper.GetDataSet(safeSql);

foreach (DataRow row in table.Rows)
{
Message message = new Message();

message.Mid = (int)row["Mid"];
message.Title = (string)row["Title"];
message.Mcontent = (string)row["Mcontent"];
message.Author = (string)row["Author"];
message.Mdate = (DateTime)row["Mdate"];
message.Files = (string)row["Files"];

list.Add(message);
}

return list;
}
catch (Exception e)
{
throw e;
}
}

public static DataTable GetDataSet(string safeSql)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}


这是我的方法,是不是会出现那种问题
cpp2017 2010-11-02
  • 打赏
  • 举报
回复
是不是有资源没有释放
dafei198607 2010-11-02
  • 打赏
  • 举报
回复
但是,为什么刚开始没事,运行个一两天就出错呢?
wuhuabucai 2010-11-02
  • 打赏
  • 举报
回复
顶 慕白兄

楼主进行错误捕捉了没
porschev 2010-11-02
  • 打赏
  • 举报
回复
应该是代码哪里写的有问题
paul_C 2010-11-02
  • 打赏
  • 举报
回复
意思是 所取的列在数据库中不存在,

检查下程序吧。
dafei198607 2010-11-02
  • 打赏
  • 举报
回复
底层没问题,服务器重启后就没问题了,运行一段时间就会出现问题,若是底层为题的话是不是应该跑起来就不行了?重新编译后也不行,运行个一两天就会出现上卖弄的问题,多谢大家捧场,再出点主意吧,嘿嘿
cpp2017 2010-11-02
  • 打赏
  • 举报
回复
有可能是你的底层,查询数据库那里,出错后被catch掉了,然后返回了一个datatable之类的.
  • 打赏
  • 举报
回复
最好的方法就是:你把你的源码重新生成网站,然后在发布网站,记住,在之前要先编译一下!就是重新生成一下!@
Rock870210 2010-11-02
  • 打赏
  • 举报
回复
这个一般是查询语句的问题。可以查看报错的页面,然后去找到相应的类至方法。查看sql语句中的查询字段是否与数据库表相对应
dafei198607 2010-11-02
  • 打赏
  • 举报
回复
楼上的能否说得明白点?一般情况下是哪个地方的问题
kkbac 2010-11-02
  • 打赏
  • 举报
回复
一般应该先检查程序,

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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