我的程序时设计了三个模块 分别实现不同级别的操作
DataCommandOfNews类用来对数据库进行增删操作 下面是代码
private CNews mynews;
private SqlConnection mydataconnetion = new SqlConnection();
public DataCommandOfNews(CNews news)
{
this.mynews = news;
}
public string myconstr
{
get { return myconstr; }
set { myconstr = value; }
}
//添加新闻
public void AddNews(string editor)
{
mydataconnetion.ConnectionString = myconstr;
mydataconnetion.Open();
string AddNewsStr = "insert into news (news_author,news_class,news_title,news_subtitle,news_content,news_date,news_editor,news_iscritical) values (@author,@class,@title,@subtitle,@content,@date,@editor,@iscritical)";
SqlCommand AddNewsCom = new SqlCommand(AddNewsStr, mydataconnetion);
AddNewsCom.Parameters.AddWithValue("@author", mynews.Nauthor);
AddNewsCom.Parameters.AddWithValue("@class", mynews.Nclass);
AddNewsCom.Parameters.AddWithValue("@title", mynews.Ntitle);
AddNewsCom.Parameters.AddWithValue("@subtitle", mynews.Nsubtitle);
AddNewsCom.Parameters.AddWithValue("@content", mynews.Ncontent);
AddNewsCom.Parameters.AddWithValue("@date", mynews.Ndatetime);
AddNewsCom.Parameters.AddWithValue("@editor", editor);
AddNewsCom.Parameters.AddWithValue("@iscritical", mynews.Niscritical);
AddNewsCom.ExecuteNonQuery();
mydataconnetion.Close();
}
Admin类用来调用DataCommandOfNews类中的一些方法 下面是代码
private string admin_name;
private int admin_role;
private int admin_id;
public admin(string name,int role,int id)
{
this.admin_name = name;
this.admin_role = role;
this.admin_id = id;
}
public int _id
{
get { return _id; }
set { _id = admin_id; }
}
public string _name
{
get { return _name; }
set { _name = admin_name; }
}
public int _role
{
get { return _role; }
set { _role = admin_role; }
}
public string _lastlogin
{
get { return _lastlogin; }
set { _lastlogin = value; }
}
public string _regtime
{
get { return _regtime; }
set { _regtime = value; }
}
//添加新闻
public void AddNews(CNews mynews)
{
DataCommandOfNews AddNewsCom = new DataCommandOfNews(mynews);
AddNewsCom.myconstr = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["studyConnectionString"].ToString();
AddNewsCom.AddNews(admin_name);
Response.Write("<script>alert('添加成功!')</script>");
}
在主程序中 一开始新建连接自定义了一个函数
private void Bind()
{
string MyConStr;
MyConStr = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["studyConnectionString"].ToString();
mydatacon.ConnectionString = MyConStr;//错误提示在这行 C#中不允许更改“ConnectionString”属性,连接的当前状态为打开。
mydatacon.Open();
}
建立admin对象
private admin adminbuild()
{
Bind();
string MyCmdStr = "select * from admininfo where admin_username=@name";
SqlCommand MyCmd = new SqlCommand(MyCmdStr, mydatacon);
MyCmd.Parameters.AddWithValue("@name", Session["username"].ToString());
SqlDataReader MyDr = MyCmd.ExecuteReader();
MyDr.Read();
int iRole = int.Parse(MyDr["admin_role"].ToString());
int iID = int.Parse(MyDr["admin_id"].ToString());
string strName = Session["username"].ToString();
admin myadmin = new admin(strName, iRole, iID);
mydatacon.Close();
return myadmin;
}
在添加新闻时
protected void BTNconfirm_Click(object sender, EventArgs e)
{
Bind();
if (NewsChildClass.SelectedItem != null)
{
string MyComStr;
MyComStr = "select class_id from class where class_name=@name";
SqlCommand MyCmd = new SqlCommand(MyComStr, mydatacon);
MyCmd.Parameters.AddWithValue("@name", NewsChildClass.SelectedItem.ToString());
SqlDataReader MyDr = MyCmd.ExecuteReader();
MyDr.Read();
//此时ClassID可以用作最后上传新闻时的标识
ClassID = int.Parse(MyDr["class_id"].ToString());
}
if (Session["username"] != null)
{
//构造一个admin对象 实现对新闻的添加操作
admin MyAdmin = adminbuild();
//取出各控件中的值 为CNews类的实例化提供参数
string Ntitle = TBnewstitle.Text; //新闻标题
string Nsubtitle = TBnewssubtitle.Text; //新闻副标题
string Nautuor = TBnewsauthotr.Text; //新闻作者
string Neditor = MyAdmin._name; //新闻编辑
string Ndatet = DateTime.Now.ToString(); //新闻提交日期
string Ncontent = NewsContent.Value; //新闻内容
int iscritical;
if (CBiscritical.Checked)
{
iscritical = 0;
}
else
{
iscritical = 1;
}
//实例化一个新闻对象
CNews news = new CNews(Ntitle, Nsubtitle, Ndatet, Neditor, Nautuor, Ncontent, ClassID, iscritical);
MyAdmin.AddNews(news,mydatacon);
mydatacon.Close();
}
else
{
Response.Redirect("login.aspx");
}
}
每一次运行的时候都会说“C#中不允许更改“ConnectionString”属性 ”我很奇怪我都已经把连接关上了怎么还会说不允许更改ConnectionString属性,何况添加新闻的过程中我根本没有去动这个属性啊 在自定义的类里面都是在类里面自己产生一个sqlconnection 难道说同时只允许一个sqlconnection存在?恳请大侠指教!!!我为这段东西查了一下午资料了~~~~
DataCommandOfNews类用来对数据库进行增删操作 下面是代码
private CNews mynews;
private SqlConnection mydataconnetion = new SqlConnection();
public DataCommandOfNews(CNews news)
{
this.mynews = news;
}
public string myconstr
{
get { return myconstr; }
set { myconstr = value; }
}
//添加新闻
public void AddNews(string editor)
{
mydataconnetion.ConnectionString = myconstr;
mydataconnetion.Open();
string AddNewsStr = "insert into news (news_author,news_class,news_title,news_subtitle,news_content,news_date,news_editor,news_iscritical) values (@author,@class,@title,@subtitle,@content,@date,@editor,@iscritical)";
SqlCommand AddNewsCom = new SqlCommand(AddNewsStr, mydataconnetion);
AddNewsCom.Parameters.AddWithValue("@author", mynews.Nauthor);
AddNewsCom.Parameters.AddWithValue("@class", mynews.Nclass);
AddNewsCom.Parameters.AddWithValue("@title", mynews.Ntitle);
AddNewsCom.Parameters.AddWithValue("@subtitle", mynews.Nsubtitle);
AddNewsCom.Parameters.AddWithValue("@content", mynews.Ncontent);
AddNewsCom.Parameters.AddWithValue("@date", mynews.Ndatetime);
AddNewsCom.Parameters.AddWithValue("@editor", editor);
AddNewsCom.Parameters.AddWithValue("@iscritical", mynews.Niscritical);
AddNewsCom.ExecuteNonQuery();
mydataconnetion.Close();
}
Admin类用来调用DataCommandOfNews类中的一些方法 下面是代码
private string admin_name;
private int admin_role;
private int admin_id;
public admin(string name,int role,int id)
{
this.admin_name = name;
this.admin_role = role;
this.admin_id = id;
}
public int _id
{
get { return _id; }
set { _id = admin_id; }
}
public string _name
{
get { return _name; }
set { _name = admin_name; }
}
public int _role
{
get { return _role; }
set { _role = admin_role; }
}
public string _lastlogin
{
get { return _lastlogin; }
set { _lastlogin = value; }
}
public string _regtime
{
get { return _regtime; }
set { _regtime = value; }
}
//添加新闻
public void AddNews(CNews mynews)
{
DataCommandOfNews AddNewsCom = new DataCommandOfNews(mynews);
AddNewsCom.myconstr = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["studyConnectionString"].ToString();
AddNewsCom.AddNews(admin_name);
Response.Write("<script>alert('添加成功!')</script>");
}
在主程序中 一开始新建连接自定义了一个函数
private void Bind()
{
string MyConStr;
MyConStr = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["studyConnectionString"].ToString();
mydatacon.ConnectionString = MyConStr;//错误提示在这行 C#中不允许更改“ConnectionString”属性,连接的当前状态为打开。
mydatacon.Open();
}
建立admin对象
private admin adminbuild()
{
Bind();
string MyCmdStr = "select * from admininfo where admin_username=@name";
SqlCommand MyCmd = new SqlCommand(MyCmdStr, mydatacon);
MyCmd.Parameters.AddWithValue("@name", Session["username"].ToString());
SqlDataReader MyDr = MyCmd.ExecuteReader();
MyDr.Read();
int iRole = int.Parse(MyDr["admin_role"].ToString());
int iID = int.Parse(MyDr["admin_id"].ToString());
string strName = Session["username"].ToString();
admin myadmin = new admin(strName, iRole, iID);
mydatacon.Close();
return myadmin;
}
在添加新闻时
protected void BTNconfirm_Click(object sender, EventArgs e)
{
Bind();
if (NewsChildClass.SelectedItem != null)
{
string MyComStr;
MyComStr = "select class_id from class where class_name=@name";
SqlCommand MyCmd = new SqlCommand(MyComStr, mydatacon);
MyCmd.Parameters.AddWithValue("@name", NewsChildClass.SelectedItem.ToString());
SqlDataReader MyDr = MyCmd.ExecuteReader();
MyDr.Read();
//此时ClassID可以用作最后上传新闻时的标识
ClassID = int.Parse(MyDr["class_id"].ToString());
}
if (Session["username"] != null)
{
//构造一个admin对象 实现对新闻的添加操作
admin MyAdmin = adminbuild();
//取出各控件中的值 为CNews类的实例化提供参数
string Ntitle = TBnewstitle.Text; //新闻标题
string Nsubtitle = TBnewssubtitle.Text; //新闻副标题
string Nautuor = TBnewsauthotr.Text; //新闻作者
string Neditor = MyAdmin._name; //新闻编辑
string Ndatet = DateTime.Now.ToString(); //新闻提交日期
string Ncontent = NewsContent.Value; //新闻内容
int iscritical;
if (CBiscritical.Checked)
{
iscritical = 0;
}
else
{
iscritical = 1;
}
//实例化一个新闻对象
CNews news = new CNews(Ntitle, Nsubtitle, Ndatet, Neditor, Nautuor, Ncontent, ClassID, iscritical);
MyAdmin.AddNews(news,mydatacon);
mydatacon.Close();
}
else
{
Response.Redirect("login.aspx");
}
}
每一次运行的时候都会说“C#中不允许更改“ConnectionString”属性 ”我很奇怪我都已经把连接关上了怎么还会说不允许更改ConnectionString属性,何况添加新闻的过程中我根本没有去动这个属性啊 在自定义的类里面都是在类里面自己产生一个sqlconnection 难道说同时只允许一个sqlconnection存在?恳请大侠指教!!!我为这段东西查了一下午资料了~~~~
else
{
Response.Redirect("login.aspx");
这里面没有关闭连接
}
象connection.Open(),Close()这样的东西要如下调用,确保关闭
try
{
connection.Open();
///
}
Catch(ArgumentException)
{
MessageBox.Show("ConnectionString错误");
///
}
finally
{
if(connection.State==Connection.Open)
connection.Close();
}