VS2005 数据无法写入数据库
这是我的程序:
主要是想做个访问网站人数的统计
Global.asax中的代码如下:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("Data Source=(local);Initial Catalog=countPeople;;Integrated Security=True;Persist Security Info=True");
con.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("select * from countPeople",con);
int count = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
Application["total"] = count;
Application["online"] = 0;
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("Data Source=(local);Initial Catalog=countPeople;;Integrated Security=True;Persist Security Info=True");
con.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("update countPeople set num"+Application["total"].ToString(), con);
cmd.ExecuteNonQuery();
con.Close();
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Session.Timeout = 1;
Application.Lock();
Application["total"] = (int)Application["total"] + 1;
Application["online"]=(int)Application["online"]+1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock();
}
无法将历史在线人数count写入数据库,调试的时候将www服务关闭也无法更新,盼高人指点!!
------解决方案-------------------- con.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("select * from countPeople",con);
int count = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
你的表结构是什么样的?是不是SQL语句写错了,ExecuteScalar()方法是获得第一行第一列的值哦!你要统计应该是
select count(*) from countPeople吧!
------解决方案-------------------- Application_End?!你不如在Session_End的时候执行更新。
"update countPeople set num"+Application["total"].ToString()这个也有问题。set num=xxx where xxx吧。
------解决方案-------------------- ...太长,没耐心..
------解决方案-------------------- 哦
------解决方案-------------------- 太长,没耐心看。我碰到过这种情况。我那次是变量 超出了字段的长度!
------解决方案-------------------- 探讨 con.Open(); System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("select * from countPeople",con); int count = Convert.ToInt32(cmd.ExecuteScalar()); con.Close(); 你的表结构是什么样的?是不是SQL语句写错了,ExecuteScalar()方法是获得第一行第一列的值哦!你要统计应该是 select count(*) from countPeople吧!
------解决方案-------------------- 我也同意一楼的看法