本人新手,因为需要做了个站点,在制作的时候访问没问题,但是让学生参与的时候,五十几个人,就要出错,请大虾指点,谢谢!网页界面
多人访问时的出错页面
网页界面的那个页面的代码
<%@ Page Language="C#" MasterPageFile="MasterPage3.master" AutoEventWireup="true" CodeFile="SZDknowledge.aspx.cs" Inherits="student_knowledge" %><%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script src="/images/dhtmlwindow.js" type="text/javascript"></script>
<script type="text/javascript">
function opwins(url){
var win=dhtmlwindow.open("dealbox", "iframe", url, "提示:鼠标点此移动窗口,拖动窗口右下角改变窗口大小", "width=640px,height=480px,left=100px,top=50px,resize=1,scrolling=0","recal");
}
</script>
<link href="/images/dhtmlwindow.css" rel="Stylesheet" type="text/css" />
<div>
<table align="center" width="100%">
<tr>
<td width="180px" valign="top">
<asp:TreeView ID="TreeView1" runat="server" EnableViewState="False" ShowLines="True">
</asp:TreeView>
</td>
<td valign="top">
<asp:Image ID="Image1" runat="server" ImageUrl="~/images/line.gif" />
</td>
<td valign="top">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:xxzdConnectionString %>"
SelectCommand="SELECT [ClassName], [ClassID] FROM [ZDClass] where Tdepth=4">
</asp:SqlDataSource>
<br />
<asp:DataList Id="dlCategories" runat="server" >
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.ClassName") %>
<br />
<%# ShowResource(Convert.ToString(DataBinder.Eval(Container.DataItem, "ClassID")))%>
<br />
<br />
</ItemTemplate>
</asp:DataList>
<br />
<table style="width: 98%; background-color: #D2E9FF;" cellpadding="0"
cellspacing="0">
<tr>
<td style="width:976px; height:25px;">
<asp:Label ID="Label7" runat="server" Text="当前页码"></asp:Label>
<asp:Label ID="labPage" runat="server" Text="1"></asp:Label>
<asp:Label ID="Label6" runat="server" Text="/"></asp:Label>
<asp:Label ID="labBackPage" runat="server"></asp:Label>
<asp:LinkButton ID="lnkbtnOne" runat="server" Font-Underline="False" ForeColor="Red"
OnClick="lnkbtnOne_Click">首页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnUp" runat="server" Font-Underline="False" ForeColor="Red"
OnClick="lnkbtnUp_Click">上一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnNext" runat="server" Font-Underline="False" ForeColor="Red"
OnClick="lnkbtnNext_Click">下一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnBack" runat="server" Font-Underline="False" ForeColor="Red"
OnClick="lnkbtnBack_Click">尾页</asp:LinkButton>
<asp:HiddenField ID="HiddenField1" runat="server" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</asp:Content>
多人访问时的出错页面
网页界面的那个页面的代码
<%@ Page Language="C#" MasterPageFile="MasterPage3.master" AutoEventWireup="true" CodeFile="SZDknowledge.aspx.cs" Inherits="student_knowledge" %><%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script src="/images/dhtmlwindow.js" type="text/javascript"></script>
<script type="text/javascript">
function opwins(url){
var win=dhtmlwindow.open("dealbox", "iframe", url, "提示:鼠标点此移动窗口,拖动窗口右下角改变窗口大小", "width=640px,height=480px,left=100px,top=50px,resize=1,scrolling=0","recal");
}
</script>
<link href="/images/dhtmlwindow.css" rel="Stylesheet" type="text/css" />
<div>
<table align="center" width="100%">
<tr>
<td width="180px" valign="top">
<asp:TreeView ID="TreeView1" runat="server" EnableViewState="False" ShowLines="True">
</asp:TreeView>
</td>
<td valign="top">
<asp:Image ID="Image1" runat="server" ImageUrl="~/images/line.gif" />
</td>
<td valign="top">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:xxzdConnectionString %>"
SelectCommand="SELECT [ClassName], [ClassID] FROM [ZDClass] where Tdepth=4">
</asp:SqlDataSource>
<br />
<asp:DataList Id="dlCategories" runat="server" >
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.ClassName") %>
<br />
<%# ShowResource(Convert.ToString(DataBinder.Eval(Container.DataItem, "ClassID")))%>
<br />
<br />
</ItemTemplate>
</asp:DataList>
<br />
<table style="width: 98%; background-color: #D2E9FF;" cellpadding="0"
cellspacing="0">
<tr>
<td style="width:976px; height:25px;">
<asp:Label ID="Label7" runat="server" Text="当前页码"></asp:Label>
<asp:Label ID="labPage" runat="server" Text="1"></asp:Label>
<asp:Label ID="Label6" runat="server" Text="/"></asp:Label>
<asp:Label ID="labBackPage" runat="server"></asp:Label>
<asp:LinkButton ID="lnkbtnOne" runat="server" Font-Underline="False" ForeColor="Red"
OnClick="lnkbtnOne_Click">首页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnUp" runat="server" Font-Underline="False" ForeColor="Red"
OnClick="lnkbtnUp_Click">上一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnNext" runat="server" Font-Underline="False" ForeColor="Red"
OnClick="lnkbtnNext_Click">下一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnBack" runat="server" Font-Underline="False" ForeColor="Red"
OnClick="lnkbtnBack_Click">尾页</asp:LinkButton>
<asp:HiddenField ID="HiddenField1" runat="server" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</asp:Content>
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class student_knowledge : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e)
{
InitTree();
if (!IsPostBack)
{
DataAccess.IsAdmin(3);
//传递参数后 根据参数返回相应数据
if (Request["classID"] != null)
{
try
{
int ClassID = Convert.ToInt32(Request.QueryString["classID"]);
if (ClassID == 0)
{
SqlDataSource1.SelectCommand = "SELECT * FROM ZDClass where Tdepth=4 order by classid";
}
else
{
string childclassid = getchild(ClassID);
SqlDataSource1.SelectCommand = "SELECT * FROM ZDClass where Tdepth=4 and ClassID in (" + childclassid + ") ";
} HiddenField1.Value = SqlDataSource1.SelectCommand;
dlBind(SqlDataSource1.SelectCommand); //SqlDataSource1.ConnectionString = ConfigurationManager.ConnectionStrings["xxzdConnectionString"].ConnectionString;
}
catch
{
Response.Write("<script language=\"javascript\">alert('参数传递错误!');history.back();</script>");
Response.End();
}
finally
{
// int ClassID = Convert.ToInt32(Request.QueryString["classID"]);
DataAccess.Close();
}
}
} } public void dlBind(string chasql)
{
string strCon = ConfigurationManager.ConnectionStrings["xxzdConnectionString"].ConnectionString;
int curpage = Convert.ToInt32(this.labPage.Text);
PagedDataSource ps = new PagedDataSource();
SqlConnection sqlcon = new SqlConnection(strCon);
sqlcon.Open();
string sqlstr = "SELECT * FROM ZDClass where Tdepth=4 ";
if (chasql != "")
{
sqlstr = chasql;
} SqlDataAdapter MyAdapter = new SqlDataAdapter(sqlstr,sqlcon); DataSet ds = new DataSet();
MyAdapter.Fill(ds, "classid");
ps.DataSource = ds.Tables["classid"].DefaultView;
ps.AllowPaging = true; //是否可以分页
ps.PageSize = 10; //显示的数量
ps.CurrentPageIndex = curpage - 1; //取得当前页的页码
this.lnkbtnUp.Enabled = true;
this.lnkbtnNext.Enabled = true;
this.lnkbtnBack.Enabled = true;
this.lnkbtnOne.Enabled = true;
if (curpage == 1)
{
this.lnkbtnOne.Enabled = false;//不显示第一页按钮
this.lnkbtnUp.Enabled = false;//不显示上一页按钮
}
if (curpage == ps.PageCount)
{
this.lnkbtnNext.Enabled = false;//不显示下一页
this.lnkbtnBack.Enabled = false;//不显示最后一页
}
this.labBackPage.Text = Convert.ToString(ps.PageCount);
this.dlCategories.DataSource = ps;
this.dlCategories.DataKeyField = "classid";
this.dlCategories.DataBind();
sqlcon.Close();
sqlcon.Dispose();
} protected void lnkbtnOne_Click(object sender, EventArgs e)
{
this.labPage.Text = "1";
this.dlBind(HiddenField1.Value.ToString());
}
protected void lnkbtnUp_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) - 1);
this.dlBind(HiddenField1.Value.ToString());
}
protected void lnkbtnNext_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) + 1);
this.dlBind(HiddenField1.Value.ToString());
}
protected void lnkbtnBack_Click(object sender, EventArgs e)
{
this.labPage.Text = this.labBackPage.Text;
this.dlBind(HiddenField1.Value.ToString());
}
private string getchild(int parid)
{
string getchildstr="0";
int ttdepth;
string sql = "select * from zdclass where ClassID="+parid.ToString();
ttdepth = Convert.ToInt16(DataAccess.GetDataTable(sql).Rows[0]["Tdepth"]);
if (ttdepth == 4)
{
getchildstr = getchildstr + "," + parid.ToString();
}
else
{
string Sql = "select * from zdclass where ParentID=" + parid.ToString();
DataTable dt = DataAccess.GetDataTable(Sql);
DataRow[] drs = dt.Select("ParentID=" + parid.ToString());
foreach (DataRow dr in drs)
{
if (dr["Tdepth"].ToString() == "4")
{
getchildstr = getchildstr + "," + dr["ClassID"].ToString();
}
else
{
getchildstr = getchildstr + "," + getchild(Convert.ToInt16(dr["ClassID"]));
}
}
}
return getchildstr;
} public string ShowResource(string classids)
{
string showresourcestr = "";
string Sql = "select * from ZDResource where Rnode=" + Convert.ToInt16(classids)+" and Rstat=0";
DataTable dt = DataAccess.GetDataTable(Sql);
DataRow[] drs = dt.Select("Rnode=" + Convert.ToInt16(classids));
string picurl = "";
foreach (DataRow dr in drs)
{
string rrtype = dr["Rtype"].ToString();
switch (rrtype)
{
case "文本": picurl = "/images/wenben.png"; break;
case "图片": picurl = "/images/tupian.png"; break;
case "视频": picurl = "/images/shipin.png"; break;
case "FLASH":picurl = "/images/flash.png"; break;
case "实验": picurl = "/images/default.png"; break;
default: picurl = ""; break;
}
string urlget = "SZDshowresource.aspx?rid=" + dr["Rid"];
showresourcestr = showresourcestr + "<a href='#' onclick=javascript:opwins('" + urlget + "'); return false;><img src='" + picurl + "'></a>";
}
return showresourcestr;
}
private void InitTree()
{
TreeView1.Nodes.Clear();
TreeNode rootNode = new TreeNode();
rootNode.Text = "知识结构";
rootNode.Value = "0";
rootNode.NavigateUrl = "?classID=0";
TreeView1.Nodes.Add(rootNode);
//string Sql = "select * from zdclass where Tdepth<4 order by SortNumber asc";
DataTable dt = DataAccess.getinittreetable();
AddNote(dt, rootNode, 0);
TreeView1.ExpandAll();
}
//子节点生成
private void AddNote(DataTable dt, TreeNode node, int fatherid)
{
DataRow[] drs = dt.Select("ParentID=" + fatherid.ToString());
foreach (DataRow dr in drs)
{
TreeNode childNode = new TreeNode();
string ChiText = ""; childNode.Text = dr["className"].ToString() + ChiText.ToString();
childNode.Value = dr["classid"].ToString();
childNode.NavigateUrl = "?classID=" + dr["classid"].ToString(); node.ChildNodes.Add(childNode); AddNote(dt, childNode, Convert.ToInt32(dr["classid"]));
}
}
}
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.SessionState;/// <summary>
/// 数据类
/// </summary>
public class DataAccess
{
private static SqlConnection Conn = new SqlConnection();
private static SqlCommand Cmd = new SqlCommand();
public DataAccess()
{ } /// <summary>
/// 打开连接
/// </summary> public static void Open()
{
if (Conn.State.Equals(ConnectionState.Closed))
{
Conn.ConnectionString = ConfigurationManager.ConnectionStrings["xxzdConnectionString"].ConnectionString;
Cmd.Connection = Conn;
Conn.Open();
}
} /// <summary>
/// 关闭连接
/// </summary>
public static void Close()
{
if (Conn.State == ConnectionState.Open)
{
Conn.Close();
Conn.Dispose();
Cmd.Dispose();
}
} public static DataTable getcunchutable()
{
try
{ Open(); SqlCommand cmd = new SqlCommand("getclass", Conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter Da = new SqlDataAdapter(cmd);
DataTable Dt = new DataTable(); Da.Fill(Dt);
return Dt;
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
finally
{
Close();
}
} public static DataTable getinittreetable()
{
try
{ Open(); SqlCommand cmd = new SqlCommand("inittree", Conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter Da = new SqlDataAdapter(cmd);
DataTable Dt = new DataTable(); Da.Fill(Dt);
return Dt;
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
finally
{
Close();
}
}
public static DataSet GetDataSet(string sql)
{
try
{
Open();
SqlDataAdapter Da = new SqlDataAdapter(sql, Conn);
DataSet Ds = new DataSet();
Da.Fill(Ds);
return Ds;
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
finally
{
Close();
}
} public static DataTable GetDataTable(string sql)
{
try
{
Open();
SqlDataAdapter Da = new SqlDataAdapter(sql, Conn);
DataTable Dt = new DataTable();
Da.Fill(Dt);
return Dt;
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
finally
{
Close();
}
} public static int ExecuteCmd(string sql)
{
try
{
Open();
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = sql;
Cmd.ExecuteNonQuery();
return 1;
}
catch
{
return -1;
}
finally
{
Close();
}
} /// <summary>
/// 统计记录条数
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int CountCmd(string sql)
{
try
{
Open();
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = sql;
return (int)Cmd.ExecuteScalar();
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
finally
{
Close();
}
} public static DataTable getusertable(string user)
{
try
{ Open(); SqlCommand cmd = new SqlCommand("getuserinfo", Conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@user", SqlDbType.VarChar, 50);
cmd.Parameters["@user"].Value = user;
SqlDataAdapter Da = new SqlDataAdapter(cmd);
DataTable Dt = new DataTable(); Da.Fill(Dt);
return Dt;
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
finally
{
Close();
}
} /// <summary>
/// 判断管理员
/// </summary>
public static void IsAdmin(int lev)
{
/*
string user=HttpContext.Current.Session["UserName"].ToString();
DataTable dtu = DataAccess.getusertable(user);
int llev=3;
if (Convert.ToInt16(dtu.Rows.Count) > 0)
{
llev = Convert.ToInt16(dtu.Rows[0]["GroupID"]);
}
if (llev != lev)
{
HttpContext.Current.Response.Write(@"<script>alert('用户身份不匹配,请不要使用旁注!');location='\\default.aspx';</script>");
System.Web.HttpContext.Current.Response.End();
}
*/
}
public static string showgroupid(int lev)
{
switch (lev)
{
case 1: return "管理员"; break;
case 2: return "教师"; break;
case 3: return "学生"; break;
default: return "学生";
} } public static string showclass(int lev)
{
string Sql = "select * from ZDClass where ClassID=" + lev ;
string classname=GetDataTable(Sql).Rows[0]["Classname"].ToString();
return classname; } public static void Message(System.Web.UI.Page page, string nr)
{ page.RegisterStartupScript("message", "<script language='javascript'>alert('" + nr + "');</script>");
}
public static void Message1(System.Web.UI.Page page, string nr, string Url)
{ page.RegisterStartupScript("message", "<script language='javascript'>alert('" + nr + "'); location='" + Url + "'</script>");
} public static void Message2(System.Web.UI.Page page, string nr)
{ page.RegisterStartupScript("message", "<script language='javascript'>alert('" + nr + "'); window.opener.reloadparent();self.close();</script>");
}
/// <summary>
/// 判断是否为数字
/// </summary>
/// <param name="myObj">传递的参数</param>
/// <returns>返回真假值</returns>
public static bool isNumber(Object myObj)
{
try
{
int i = Convert.ToInt32(myObj);
return (true);
}
catch
{
return (false);
}
}
}因为是边学边做的,很多都是从网上找来,修改下做出来的,
我知道问题肯定是出在数据库操作上,只是不知道怎么去修改,
请大虾指点啊!谢谢!!!!!!
lock(typeof(DataAccess)){
...
}
正解,有些列名并没有对上,比哪查询时没有name名,但前台绑定了name,或者查询是name但绑定的是namf还就是数据库要及时关闭,放进using中使用吧。建议你下载一个MSDN,看看USING的用法
private static SqlConnection Conn = new SqlConnection();
private static SqlCommand Cmd = new SqlCommand();
千万不要定义成静态的,把它定义到方法里头去,什么时候用什么时候new对象实例化 调用连接串 这样每个人都会有自己的一个连接对象 再把web.config里面加上这个MultipleActiveResultSets=True这样写: <add name="userDB" connectionString="server=.;database=Media;uid=sa;pwd=sa;MultipleActiveResultSets=True"/>
谢谢xiaoyatoupiqizhuai帮我解决了问题