[求助]我想执行一个带插入功能的存储过程,但是总是插入不进去,请指教.

luxhacker6 2005-03-13 03:58:36
我的存储过程
CREATE PROCEDURE dbo.InsertData
(
@Yname varchar (50),
@sex varchar (50),
@qq varchar (50),
@email varchar (50),
@homepage varchar (50),
@caption varchar (50),
@content text

)
AS
INSERT INTO guest (Yname,sex,qq,email,homepage,caption,content)
values(@Yname,@sex,@qq,@email,@homepage,@caption,@content)
RETURN

GO

我的C#源码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;


namespace Leaveword
{
/// <summary>
/// test3 的摘要说明。
/// </summary>
public class test3 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.Label Label5;
protected System.Web.UI.WebControls.Label Label6;
protected System.Web.UI.WebControls.Label Label7;
protected System.Web.UI.WebControls.TextBox Yname;
protected System.Web.UI.WebControls.TextBox Ysex;
protected System.Web.UI.WebControls.TextBox YQQ;
protected System.Web.UI.WebControls.TextBox YEmail;
protected System.Web.UI.WebControls.TextBox Yhomepage;
protected System.Web.UI.WebControls.TextBox Ycaption;
protected System.Web.UI.WebControls.TextBox Ycontent;
protected System.Web.UI.WebControls.Button Button2;

private void Page_Load(object sender, System.EventArgs e)
{

}


#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
private SqlConnection cnPubs;
private SqlCommand cmdPubs;
private SqlCommand cmdUpdPubs;
private SqlDataAdapter daPubs;
private DataSet dsPubs;

private void Button1_Click(object sender, System.EventArgs e)
{

try
{

// 创建一个数据库连接对象
cnPubs = new SqlConnection( "server=KANG;integrated security=true;database=guestbook" );
Response.Write("aaaaa");
// 创建一个SqlCommand对象,并指明其命令类型为存储过程
cmdPubs = new SqlCommand();
cmdPubs.Connection = cnPubs;
cmdPubs.CommandType = CommandType.StoredProcedure;
cmdPubs.CommandText = "InsertData";
Response.Write(cmdPubs.CommandText);

// // 创建另一个SqlCommand对象,该对象引用更新发行商名称的存储过程
// cmdUpdPubs = new SqlCommand();
// cmdUpdPubs.Connection = cnPubs;
// cmdUpdPubs.CommandType = CommandType.StoredProcedure;
// cmdUpdPubs.CommandText = "InsertData";

// 为上面的SqlCommand对象添加必要的参数
cmdPubs.Parameters.Add( "@Yname", SqlDbType.VarChar, 50, Yname.Text);
cmdPubs.Parameters.Add( "@sex", SqlDbType.VarChar, 50, Ysex.Text);
cmdPubs.Parameters.Add( "@qq", SqlDbType.VarChar, 50, YQQ.Text );
cmdPubs.Parameters.Add( "@email", SqlDbType.VarChar, 50, YEmail.Text );
cmdPubs.Parameters.Add( "@homepage", SqlDbType.VarChar, 50, Yhomepage.Text );
cmdPubs.Parameters.Add( "@caption", SqlDbType.VarChar, 50, Ycaption.Text );
//SqlParameter updParam = new SqlParameter( "@Original_pub_name", SqlDbType.VarChar, 40, "pub_name" );
//updParam.SourceVersion = DataRowVersion.Original;
cmdPubs.Parameters.Add( "@content", SqlDbType.Text, 16, Ycontent.Text);
Response.Write(Ycaption.Text);

// 创建一个SqlDataAdapter对象,设定其SelectCommand属性和UpdateCommand对象为上面的SqlCommand对象
daPubs = new SqlDataAdapter();
// cmdPubs.ExecuteNonQuery();
daPubs.InsertCommand = cmdPubs;
//daPubs.InsertCommand = cmdUpdPubs;
//daPubs.InsertCommand.ExecuteNonQuery();
Response.Write("aaaaadddd");



// 创建一个DataSet对象
dsPubs = new DataSet();



}
catch(Exception){}

// 调用SqlDataAdapter对象的Fill()方法并返回数据集对象
//daPubs.Fill( dsPubs );
//return dsPubs;

}
}

}
为什么数据库中没有新记录插入呢?
另外怎么才能查看一下存储过程是否执行了呢?
如果遇到这种问题应该怎么调试???!!!
随声附和的和灌水者不给分!!!
...全文
250 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenery 2005-03-13
  • 打赏
  • 举报
回复
执行语句 cmdPubs.ExecuteNonQuery();
被注释了,估计是在DataSet中调用更新语句

如果想在上面的代码执行插入语句,
先要 cnPubs.Open();
再 cmdPubs.ExecuteNonQuery();
hedonister 2005-03-13
  • 打赏
  • 举报
回复
就是,执行的时候出错你没反映出来,没干活你也不知道
luxhacker6 2005-03-13
  • 打赏
  • 举报
回复
已经调试成功,但是不知道原因;正确代码是:
cmdPubs.Parameters.Add( "@Yname", Yname.Text);
cmdPubs.Parameters.Add( "@sex", Ysex.Text);
cmdPubs.Parameters.Add( "@qq", YQQ.Text );
cmdPubs.Parameters.Add( "@email", YEmail.Text );
cmdPubs.Parameters.Add( "@homepage", Yhomepage.Text );
cmdPubs.Parameters.Add( "@caption", Ycaption.Text );
cmdPubs.Parameters.Add( "@content", Ycontent.Text); 写成这样
cmdPubs.Parameters.Add( "@homepage", SqlDbType.VarChar, 50, Yhomepage.Text );
cmdPubs.Parameters.Add( "@caption", SqlDbType.VarChar, 50, Ycaption.Text );
就不可以啦;
charles_y 2005-03-13
  • 打赏
  • 举报
回复
执行类似这样的语句

cmdPubs.Connection.Open();
cmdPubs.ExecuteNonQuery();
cmdPubs.Connection.Close();

charles_y 2005-03-13
  • 打赏
  • 举报
回复
你跟本就没执行插入语句
marvelstack 2005-03-13
  • 打赏
  • 举报
回复
try
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
http://blog.csdn.net/zhzuo/archive/2005/01/03/238273.aspx
marvelstack 2005-03-13
  • 打赏
  • 举报
回复
// 创建一个数据库连接对象
cnPubs = new SqlConnection( "server=KANG;integrated security=true;database=guestbook" );
// 创建一个SqlCommand对象,并指明其命令类型为存储过程
cmdPubs = new SqlCommand();
cmdPubs.Connection = cnPubs;
cmdPubs.CommandType = CommandType.StoredProcedure;
cmdPubs.CommandText = "InsertData";

// 为上面的SqlCommand对象添加必要的参数
cmdPubs.Parameters.Add( "@Yname", SqlDbType.VarChar, 50, Yname.Text);
cmdPubs.Parameters.Add( "@sex", SqlDbType.VarChar, 50, Ysex.Text);
cmdPubs.Parameters.Add( "@qq", SqlDbType.VarChar, 50, YQQ.Text );
cmdPubs.Parameters.Add( "@email", SqlDbType.VarChar, 50, YEmail.Text );
cmdPubs.Parameters.Add( "@homepage", SqlDbType.VarChar, 50, Yhomepage.Text );
cmdPubs.Parameters.Add( "@caption", SqlDbType.VarChar, 50, Ycaption.Text );
cmdPubs.Parameters.Add( "@content", SqlDbType.Text, 16, Ycontent.Text);

cmdPubs.Connection.Open();
cmdPubs.ExecuteNonQuery();
cmdPubs.Connection.Close();
beijingbeerman 2005-03-13
  • 打赏
  • 举报
回复
把连接字符串该一下试试!
cnPubs = new SqlConnection( "server=KANG;uid=sa;database=guestbook pwd=;" );
saucer 2005-03-13
  • 打赏
  • 举报
回复
change

catch(Exception){}

===>


catch(Exception ex)
{
Response.Write(ex.Message);
}

估计是
cnPubs = new SqlConnection( "server=KANG;integrated security=true;database=guestbook" );
问题,把ASPNET账号(或者,如果是windows 2003的话,Network Service账号)加到数据库
去,或采用SQL认证,参考

http://www.connectionstrings.com

HOW TO: Configure SQL Server Security for .NET Applications
http://support.microsoft.com/kb/815154

PRB:在创建从 ASP.NET 到 SQL Server 的受信任数据连接时出现“Login Failed”(登录失败)错误信息
http://support.microsoft.com/kb/316989/zh-cn


int n = cmdPubs.ExecuteNonQuery();
if (n > 0)
//成功加入
zhangguochen 2005-03-13
  • 打赏
  • 举报
回复
自己调试一下啊老兄,看是哪里出了问题吗
luxhacker6 2005-03-13
  • 打赏
  • 举报
回复
好像不行呀,就是按照上面高手所说的那么做不知道怎么回事还是插不到库中,各位看看是不是调用存储过程有错呀?真是邪门!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧