Asp.Net从零开始学-7

来源:互联网 发布:手机域名注册骗局 编辑:程序博客网 时间:2024/09/21 09:18

这里做一个投票的例子 



设计一个vote数据库

create database vote
go
use vote
go
create table voteMaster(
   voteID int primary key,--编号
   voteTitle varchar(100) not null,--项目
   voteSum int default 0  --总票数
)
go
insert into voteMaster values(1,'选举工会主席!',0)
insert into voteMaster values(2,'对网站建设的意见',0)
go

create table voteDetails(
 id int identity(1,1) ,
 voteID int foreign key references voteMaster(voteID),
 voteDetailsID int not null,
 voteItem varchar(20) not null,
 voteNum int default 0,
 primary key(voteID,voteDetailsID)
)
go
insert into voteDetails values(1,1,'allen',0)
insert into voteDetails values(1,2,'ken',0)
insert into voteDetails values(1,3,'any',0)
go
insert into voteDetails values(2,1,'非常好',0)
insert into voteDetails values(2,2,'好',0)
insert into voteDetails values(2,3,'一般',0)
insert into voteDetails values(2,4,'需要改进',0)
go

select * from voteMaster
go
select * from voteDetails
go

create trigger updateMaster  --触发器 主表修改后符合表也修改
on voteDetails
for update
as
begin
  update voteMaster set voteSum=voteSum+1 where voteID=(select top 1 voteID from inserted)
end

页面
private string voteID="2";//可以灵活改变投票对象
private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if(!this.IsPostBack){
    //建立连接
    SqlConnection con=DB.createConnection();
    con.Open();
    //查询选举的标题
    SqlCommand cmd=new SqlCommand("select voteTitle from voteMaster where voteID="+this.voteID,con);
    string title=Convert.ToString(cmd.ExecuteScalar());//返回首行对项
    this.lblMessage.Text=title;
    //查询投票的条目
    SqlCommand cmdItem=new SqlCommand("select voteDetailsID,voteItem from voteDetails where voteID="+this.voteID,con);
    SqlDataReader sdr=cmdItem.ExecuteReader();
    this.rBtnItems.DataSource=sdr;
    this.rBtnItems.DataTextField="voteItem";
    this.rBtnItems.DataValueField="voteDetailsID";
    this.rBtnItems.DataBind();
    sdr.Close();
    //关闭连接
    con.Close();
   }
  }

投票
private void btnvote_Click(object sender, System.EventArgs e)
  {
   //建立连接
   SqlConnection con=DB.createConnection();
   con.Open();
   //更新数据库
   SqlCommand cmd=new SqlCommand();
   cmd.Connection=con;
   cmd.CommandText="update voteDetails set voteNum=voteNum+1 where voteID="+voteID+"and voteDetailsID="+this.rBtnItems.SelectedValue.ToString();
   cmd.ExecuteNonQuery();//返回响应行数
   con.Close();
  }

结果
private void btnshow_Click(object sender, System.EventArgs e)
  {
   Response.Redirect("show.aspx?voteid="+this.voteID);//通过get传值
  }

show.aspx接收信息
private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   string voteID=Request.QueryString["voteid"].ToString();
   //建立连接
   SqlConnection con=DB.createConnection();
   con.Open();
   SqlCommand cmdItem=new SqlCommand("select * from voteDetails where voteID="+voteID,con);  //voteID局部变量不可是使用.this
   SqlDataReader sdr=cmdItem.ExecuteReader();
   while(sdr.Read()){
    Response.Write("<font size=15>"+sdr.GetString(3)+"-"+sdr.GetInt32(4).ToString()+"</font><br>");
   }
   //关闭连接
   sdr.Close();
   con.Close();
  }