您的位置:首页 > 编程语言 > ASP

用asp.net写的论坛程序--上贴保存

2008-04-24 05:46 204 查看
:- The page which saved data to the Database

<%@ Import Namespace="System" %>

<%@ Assembly Name="System.Data" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.ADO" %>

<%@ Page Language="C#" Debug="true" %>

<html>

<head>

<title>Thank You for Posting !</title>

<script language="C#" runat="server" >

//execute this script when the page loads

void Page_Load(Object Src, EventArgs E)

{

//if the page is called from another page

if (!Page.IsPostBack) {

//Get all the Parameters from the Query string

string name = Request.Params["name"] ;

string email = Request.Params["email"] ;

string subject = Request.Params["subject"] ;

string ip = Request.Params["ip"] ;

string date = Request.Params["date" ];

string message = Request.Params["message"] ;

bool newmess =true ;

string previd ="1";

//Check if the post is a New topic or a reply to a new topic

if(Request.Params["newpost"].Equals("no"))

{

//if its a reply then get the postid called as previd here

newmess =false ;

previd = Request.Params["previd"] ;

}

//If the post is a new topic then follow the below routine

if(newmess)

{

//The string for the path to the database , if your database is in some other

directory then edit the path

//of this variable

string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=

" Server.MapPath(".//db//board.mdb") ;

//Get a ADOConnection to the database

ADOConnection myConn = new ADOConnection(strConn) ;

//The SQL Select statement

string strCom = "Select postid from newpost" ;

//Create a ADOCommand since we want a ADODataReader later

ADOCommand myCommand =new ADOCommand(strCom,myConn);

//Open the connection

myConn.Open();

ADODataReader reader;

//Execute the command and get the Data into "reader"

myCommand.Execute(out reader) ;

int i=1 ;

//Get the current number of records present in the database.

while(reader.Read())

{

i ;

}

reader.Close() ;

//build the SQL statement to insert into the Database

string insertStr =" INSERT INTO newpost VALUES ("

i ", '"

name "', '"

email "', '"

subject "', '"

ip "', '"

date "', '"

message "',0, 0)" ;

myCommand.CommandText =insertStr ;

//Since the SQL statement does not return any output use "ExecuteNonQuery() method

myCommand.ExecuteNonQuery() ;

//Close the connection

myConn.Close() ;

}

else

{

//If the posted data is a reply to a topic then follow the below procedure

//string for the path to the database, if your database is stored in some other directory then

//edit the path here

string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source="

Server.MapPath(".//db//board.mdb") ;

ADOConnection myConn = new ADOConnection(strConn) ;

//SQL statement to select the replyid

string strCom = "Select replyid from reply" ;

//create a ADOCommand

ADOCommand myCommand =new ADOCommand(strCom,myConn);

//Open the Connection

myConn.Open();

ADODataReader reader;

//Execute the command and get the Data into "reader"

myCommand.Execute(out reader) ;

int i=1 ;

//Get the current number of records present in the database.

while(reader.Read())

{

i ;

}

reader.Close() ;

//Build a statement to insert the values into the reply table

string insertStr =" INSERT INTO reply VALUES ("

i ", '"

name "', '"

email "', '"

subject "', '"

ip "', '"

date "', '"

message "', "

previd ")";

myCommand.CommandText =insertStr ;

//ExecuteNonQuery - since the command does not return anything

myCommand.ExecuteNonQuery() ;

//string to get the replies column from the newpost table

string replyno = "SELECT replies FROM newpost WHERE postid =" previd ;

myCommand.CommandText =replyno ;

//Execute command and get the reader

myCommand.Execute(out reader) ;

//read the first record (remember there can only be one record in the reader since postid is unique)

reader.Read();

//Get the "Int16" value of the number of replies from the replies column in the newpost table

int rep =reader.GetInt16(0) ;

reader.Close() ;

rep ;

//SQL statement to update the replies field in the newpost table

string updtStr ="UPDATE newpost SET replies = " rep

" WHERE (postid = " previd ")" ;

myCommand.CommandText = updtStr;

//ExecuteNonQuerry why ?? I guess U should know by now !

myCommand.ExecuteNonQuery();

myConn.Close() ;

}

//get the different Parameters from the query string and store it

//to respective Labels

NameLabel.Text = name;

EmailLabel.Text= email ;

SubjectLabel.Text=subject;

MessageLabel.Text=message ;

}

else

{

//else display an error

errmess.Text="This Page Cannot be called directly. It has to be called from the Form posting page.<br>" ;

}

}

</script>

<LINK href="mystyle.CSS" type=text/css rel=stylesheet>

</head>

<body topmargin="0" leftmargin="0" rightmargin="0" marginwidth="0" marginheight="0">

<!-- #Include File="header.inc" -->

<center>

<asp:label id="errmess" text="" style="color:#FF0000" runat="server" />

<h2 class="fodark"><b>Thank You , for posting on the Message Board.</b></h2>

<table align=center width="60%" border="0" cellspacing="2" cellpadding="1" >

<tr class="fohead"><td colspan="2">The information You Posted!</td></tr>

<tr class="folight">

<td>Name :</td>

<td><asp:label id="NameLabel" text="" runat="server" /></td>

</tr>

<tr class="folight">

<td>E-Mail :</td>

<td><asp:label id="EmailLabel" text="" runat="server" /></td>

</tr>

<tr class="folight">

<td>Subject :</td>

<td><asp:label id="SubjectLabel" text="" runat="server" /></td>

</tr>

<tr class="folight">

<td>Message :</td>

<td><asp:label id="MessageLabel" text="" runat="server" /></td>

</tr>

</table>

<br>

<h4 class="fodark"><a href="forum.aspx">Click here </a> to go back to the Forum.<br>

<%-- A little work to show the link to return back to the page if, the post was a reply --%>

<% if(Request.Params["previd"]!=null)

{ %>

<a href='reply.aspx?postid=<%=Request.Params["previd"] %>'> Click here </a>to go back

where you came from.

<% } %>

</h4>

</center>

<!-- #Include File="footer.inc" -->

</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: