求一段传递参数代码,还望大家不吝赐教.
目的是实现在添加新闻成功后,把刚才添加成功后的新闻的ID传到下一个页,让接受页以这个ID为条件把详细内容都查询出来.
数据库:
create database NewsTest
use NewsTest
create table News
(
NewsID int identity(1,1) primary key,
NewTitle varchar(100) not null,
NewsMaster varchar(500) not null,
)
数据库连接类:DB.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// DB 的摘要说明
/// </summary>
public class DB
{
public DB()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static System.Data.SqlClient.SqlConnection createCon()
{
return new System.Data.SqlClient.SqlConnection( "server=.;database=NewsTest;uid=sa;pwd=123; ");
}
}
定义要添加的类:type.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// type 的摘要说明
/// </summary>
public class type
{
public string NewsTitle;
public string NewsMaster;
public type()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
}
添加类:ADD.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
/// <summary>
/// ADD 的摘要说明
/// </summary>
public class ADD
{
public ADD()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static bool insertOperate(type t)
{
try
{
SqlConnection con = DB.createCon();
con.Open();
SqlCommand cmd = new SqlCommand( "insert into News values(@NewsTitle,@NewsMaster) ", con);
SqlParameter para = new SqlParameter( "@NewsTitle ", SqlDbType.VarChar, 100);
para.Value = t.NewsTitle;
cmd.Parameters.Add(para);
para = new SqlParameter( "@NewsMaster ", SqlDbType.VarChar, 500);
para.Value = t.NewsMaster;
cmd.Parameters.Add(para);
cmd.ExecuteNonQuery();
return true;
}
catch (Exception e)
{
return false;
}
}
}
新闻添加页:Response.aspx
后台代码:Response.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Response : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnADD_Click(object sender, EventArgs e)
{
type t = new type();
t.NewsTitle=this.TextBox1.Text;
t.NewsMaster=this.TextBox2.Text;
if(ADD.insertOperate(t))
{
Response.Redirect( "Request.aspx?NewsID=如何获得添加成功后的NewsID ");
}
else
{
Response.Write( "失败! ");
}
}
}
添加成功后的接收页:Request.aspx
后台代码:Request.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Request : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strID = Request.Params[ "NewsID "];
SqlConnection con = DB.createCon();
con.Open();
SqlCommand cmd = new SqlCommand( "select * from News where NewsID= ' " + strID + " ' ", con);
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
this.Label1.Text = sdr[ "NewsTitle "].ToString();
this.Label2.Text = sdr[ "NewsMaster "].ToString();
sdr.Close();
}
}
[解决办法]
数据库存储过程return @@IDENTITY
在C#中得到这个返回值ID
URL传值转到下一页,在业中request.querystring[ "id "]
根据ID去数据库取值
[解决办法]
顶LS
[解决办法]
protected void btnADD_Click(object sender, EventArgs e)
{
type t = new type();
t.NewsTitle=this.TextBox1.Text;
t.NewsMaster=this.TextBox2.Text;
if(ADD.insertOperate(t))
{
//此处连接一次数据库,从NewsTest表中查询Max(NewsID )
Response.Redirect( "Request.aspx?NewsID=如何获得添加成功后的NewsID ");
}
else
{
Response.Write( "失败! ");
}
}
[解决办法]
CREATE PROCEDURE insertOperate
@NewsTitle nvarchar(128),
@NewsMaster nvarchar(200),
@retSortID int output
AS
insert into News(NewsTitle,NewsMaster) values(@NewsTitle,@NewsMaster)
set @retSortID = @@IDENTITY
------------------存储过程
public static bool insertOperate(string NewsTitle,string NewsMaster ,out int retSortID)
{
SqlConnection con = DB.createCon();
con.Open();
SqlCommand cmd = new SqlCommand( "insert into News values
(@NewsTitle,@NewsMaster) ", con);
SqlParameter para = new SqlParameter( "@NewsTitle ", SqlDbType.VarChar, 100);
para.Value = t.NewsTitle;
cmd.Parameters.Add(para);
para = new SqlParameter( "@NewsMaster ", SqlDbType.VarChar, 500);
para.Value = t.NewsMaster;
cmd.Parameters.Add(para);
para = new SqlParameter( "@retSortID ", SqlDbType.int);
parm.Direction = ParameterDirection.Output
cmd.Parameters.Add(para);
retSortID = Convert.ToInt32(parms[3].Value);
cmd.ExecuteNonQuery();
return true
}
-----返回值ID
[解决办法]
帮顶
[解决办法]
现在能够插入数据并返回id的只有通过存储过程来实现的,其他的办法可能你正常使用了不会有问题,但是逻辑都会有问题的;(除非你录入的数据除了id还能够表示唯一的值)