列“proId”不属于表 Table。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 程序是VS2005做的,运行一段时间 ,经常出现 列“”不属于"Table”,并且所有的用户均访问不了系统,但过一段时间又好了 .各位大哥帮忙,是什么原因啊,
但是上述错误是间断性的出现啊,有时候是好好的,好像突然一瞬间就有那个错误了,而且出错后每个与数据库打交道的页面都有了这种错误。重启系统后又正常了、重启SQL服务也正常了。!!帮帮忙异常详细信息: System.ArgumentException: 列“proId”不属于表 Table。
以下是我连库业务类大家看看有没有问题!
public static UserLogin GetUserByUnameAndPwd(string username,string pwd)
{
//string sql = "select * from UserLogin where UserName=@username and Password=@password";
string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["soo56"].ConnectionString;//读取配置文件中的连接字符
SqlConnection can = new SqlConnection(ConnectionStringLocalTransaction);//创建连接
can.Open();//打开连接 SqlParameter[] parm ={
new SqlParameter("@username", SqlDbType.VarChar,50),
new SqlParameter("@password", SqlDbType.VarChar,50)
};
parm[0].Value = username;
parm[1].Value = pwd;
DataSet ds = SqlHelper.ExecuteDataset(can, CommandType.StoredProcedure, "Sp_GUser", parm);//设置参数并用存储过程Sp_GUser查询数据库
can.Close();//关闭连接
can.Dispose();//释放连接 List<UserLogin> list = new List<UserLogin>(); if (ds.Tables.Count > 0)
{
try
{
DataTable table = ds.Tables[0]; foreach (DataRow row in table.Rows)
{
UserLogin userLogin = new UserLogin(); userLogin.UserId = (int)row["UserId"];
userLogin.UserName = (string)row["UserName"];
userLogin.Password = (string)row["Password"];
userLogin.RightId = (int)row["RightId"];
userLogin.Mark1 = (string)row["1"];
userLogin.Mark2 = (string)row["2"];
userLogin.Mark3 = (string)row["3"];
userLogin.Mark4 = (string)row["4"]; list.Add(userLogin);
}
IList<UserLogin> users = list;
if (users.Count > 0)
{
return users[0];
}
else
{
return null;
}
}
catch (Exception e)
{
if (ds.Tables[0].Rows[0][0] == null)
{
throw new Exception("Id为空");
}
throw e.Message.ToString();
}
} }
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 程序是VS2005做的,运行一段时间 ,经常出现 列“”不属于"Table”,并且所有的用户均访问不了系统,但过一段时间又好了 .各位大哥帮忙,是什么原因啊,
但是上述错误是间断性的出现啊,有时候是好好的,好像突然一瞬间就有那个错误了,而且出错后每个与数据库打交道的页面都有了这种错误。重启系统后又正常了、重启SQL服务也正常了。!!帮帮忙异常详细信息: System.ArgumentException: 列“proId”不属于表 Table。
以下是我连库业务类大家看看有没有问题!
public static UserLogin GetUserByUnameAndPwd(string username,string pwd)
{
//string sql = "select * from UserLogin where UserName=@username and Password=@password";
string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["soo56"].ConnectionString;//读取配置文件中的连接字符
SqlConnection can = new SqlConnection(ConnectionStringLocalTransaction);//创建连接
can.Open();//打开连接 SqlParameter[] parm ={
new SqlParameter("@username", SqlDbType.VarChar,50),
new SqlParameter("@password", SqlDbType.VarChar,50)
};
parm[0].Value = username;
parm[1].Value = pwd;
DataSet ds = SqlHelper.ExecuteDataset(can, CommandType.StoredProcedure, "Sp_GUser", parm);//设置参数并用存储过程Sp_GUser查询数据库
can.Close();//关闭连接
can.Dispose();//释放连接 List<UserLogin> list = new List<UserLogin>(); if (ds.Tables.Count > 0)
{
try
{
DataTable table = ds.Tables[0]; foreach (DataRow row in table.Rows)
{
UserLogin userLogin = new UserLogin(); userLogin.UserId = (int)row["UserId"];
userLogin.UserName = (string)row["UserName"];
userLogin.Password = (string)row["Password"];
userLogin.RightId = (int)row["RightId"];
userLogin.Mark1 = (string)row["1"];
userLogin.Mark2 = (string)row["2"];
userLogin.Mark3 = (string)row["3"];
userLogin.Mark4 = (string)row["4"]; list.Add(userLogin);
}
IList<UserLogin> users = list;
if (users.Count > 0)
{
return users[0];
}
else
{
return null;
}
}
catch (Exception e)
{
if (ds.Tables[0].Rows[0][0] == null)
{
throw new Exception("Id为空");
}
throw e.Message.ToString();
}
} }
一:最大的特点是随机性。会突然报错,说不定是什么时候,有可能是你下一个点击,或者刷新一下页面之后,总之就是出现在数据库有联系的地方(查询,绑定数据控件时)。
二:报错的多样性。一报错后,千奇百怪的错误也就喷井式爆发,如“列不属于表”,“找不到表0”,“数据转换不成功”等,各种各样都有,但都是与数据库的数据有关。
三:持续时间比较短。很多页面报错后,刷新几次,或者是等一阵,又正常了,又可以使用了,但可能下一个点击,刷新,就又报错了
四:越多人使用,网络情况越差,就越频繁。我的系统在公司内部几个开发人员测试没有问题,但上线后,客户公司很多人用,就不断有这个错。而且,有几天网络比较好,就没有发生这错,我以为换了dbhelper已经搞掂了,但这几天又继续报错。 1、法名: getList 异常信息: 列“productId”不属于表 Table
lz我公司的网站不知道出现了多少次了,我以前也发过这样的帖子,不过那个时候我解决了
原因是全局变量的问题,因为我的sql是拼接的,而在一些方法中设置了那个全局变量的值,
然后第二次再调用其他方法,因为字段被设置过,所以错了,最后我把那个全局变量全部改成局部变量
就不会错了。NND,过一段时间又出现这样的问题,以为还是那个全局变量的问题,但是整个项目都没有全局变量了
现在还没有解决这个问题,但从我的日志记录来看,1、我的项目的数据层都有记录异常日志,在页面Global.aspx里也有记录异常日志。而且数据层都是记录日志后抛出的,所以正常情况数据层出现错误的话
那么就会有2个日志记录,一个是数据层的,该日志有记录参数的值,另一个是页面的,该日志直接记录异常信息,但是每次都只有页面的日志,所以怀疑与数据绑定有关 2、SqlConnection 不要用全局或静态或单例模式 , 否则会出现不同进程进下共用connection的情况 , 特别是在web环境下 , 这将导致使用者获取的dataset不正确 , 从而引发上面我提出的问题 , 解决的方法是在需要做数据连接的地方new connection来使用 , 用后close , 这样就可以避免出现类似于 “xxxxx不属于表 Table ”等一系列的问题了 3、这个问题可能是由于并发的时候取的数据出了问题,很难找出问题,所以,
最后在这个经常容易出错的地方,加上try catch,然后在catch中加日志,把这个表的所有字段列出来,看到底是什么东西. 4、到数据库里看看日志,出错就会影响应用池,要重新启动
是否是并发操作问题 5、呵呵,应该是并发问题导致数据超时
你可以将数据库的连接池放大一些。 6、建议LZ将上线的东西加上一个日志,因为上线的东西有时错误是很难跟踪的,那你看到的问题又不全面。。
之前因为上线后网站出现问题,老大要原因,我说我也不知道,后来他才让我加日志跟踪。
这样以后出现问题都可以有据可查。我现在使用的是log4net 7、先确定下,你报的这些错不属于连接超时所带来的问题。这些问题归根结底的原因还是在与你代码的问题。
1.加日志记录记录SQL语句和连接字符串
2.查是否有垃圾数据
3.检查代码。(数据库连接,你的DBHELPER,查询语句)8、
数据库ADO.NET的连接操作不正确,我也遇到了这样的问题,原来的DBHelp类中用的是静态的一个Connection对象,现在不采用静态的,在使用时全部重新创建对象,问题解决。
代码如下:
public static int ExecuteCommand(string safeSql)
{
using (SqlConnection Connection = new SqlConnection(connectionString))
{ SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = cmd.ExecuteNonQuery();
Connection.Close();
return result;
}
}
userLogin.UserName = (string)row["UserName"];
userLogin.Password = (string)row["Password"];
userLogin.RightId = (int)row["RightId"];
userLogin.Mark1 = (string)row["1"];
userLogin.Mark2 = (string)row["2"];
userLogin.Mark3 = (string)row["3"];
userLogin.Mark4 = (string)row["4"];我就找不到这个 proid 啊!!!---------------------------------------你是不是在 某个页面做了个什么查询,然后查询中有这个 proid字段,数据库中没有。或者你的 datatable 中要得到 dt.rows[i]["proid"].tostring() 时, 存储过程中并没有查询proid这个字段。------------------多测试几次 就出来。
如果把所有的static去掉,并且缓存没冲突或者不用缓存,保证不会有问题。使用 static ,一定要仔细
DataTable table = ds.Tables[0]像这种你改成
DataTable table = ds.Tables[“表名”]
试试看会有会出问题