-- 建立一个存储过程.
Create Procedure InfoInsert
@Name nvarchar(50),
@Password nvarchar(50),
@Age bigint,
@Sex nvarchar(50),
@Email nvarchar(50) As --检查用户名是否被注册过
If exists(select * from [User] Where [User_Name]=@Name)Return Insert into [User]([User_Name],User_PassWord) Values(@Name,@Password)--查询出刚刚插入的用户名的ID
Declare @userId int
Select @userid=Max([User_ID]) from [User]--像INFO表插入详细信息
Insert into Info([User_ID],User_Age,User_Sex,User_Email)
Values(@userid,@age,@sex,@Email) GO
代码如下:
sqlCon1.Open();
// string sql="[Call InfoInsert(?)]";
// System.Data.SqlClient.SqlCommand cmd = new SqlCommand(sql,sqlCon1);
// cmd.CommandType=CommandType.Text;
System.Data.SqlClient.SqlCommand cmd = new SqlCommand();
cmd.CommandType=CommandType.StoredProcedure;
cmd.Connection=sqlCon1;
cmd.CommandText="InfoInsert"; cmd.Parameters.Add("@Name",SqlDbType.NVarChar,50);
cmd.Parameters.Add("@Password",SqlDbType.NVarChar,50);
cmd.Parameters.Add("@Age",SqlDbType.BigInt);
cmd.Parameters.Add("@Sex",SqlDbType.NVarChar,50);
cmd.Parameters.Add("@Email",SqlDbType.NVarChar,50);
cmd.Parameters[0].Value =txtName.Text.Trim();
cmd.Parameters[1].Value =txtPass1.Text.Trim();
cmd.Parameters[2].Value =txtAge.Text.Trim();
cmd.Parameters[3].Value =txtSex.SelectedItem.Text.Trim();
cmd.Parameters[4].Value =txtEmail.Text.Trim();
cmd.ExecuteNonQuery(); //记录执行所影响的行数.
int ReturnNum =cmd.ExecuteNonQuery();
if (ReturnNum > 0)
{
//插入成功
Response.Write("祝贺你插入成功.");
}
else
{
WebPu.ErrNumber ="此用户名已经被注册过了!请换一个用户名.";
Server.Transfer("MyError.aspx");
//插入失败,该用户已经注册过.
}插入记录也成功了 为什么还是返回-1呢 郁闷.
'还有个问题是,我注释的那段代码为什么总提示 "[Call InfoInsert(?)]" 附近有语法错误.
Create Procedure InfoInsert
@Name nvarchar(50),
@Password nvarchar(50),
@Age bigint,
@Sex nvarchar(50),
@Email nvarchar(50) As --检查用户名是否被注册过
If exists(select * from [User] Where [User_Name]=@Name)Return Insert into [User]([User_Name],User_PassWord) Values(@Name,@Password)--查询出刚刚插入的用户名的ID
Declare @userId int
Select @userid=Max([User_ID]) from [User]--像INFO表插入详细信息
Insert into Info([User_ID],User_Age,User_Sex,User_Email)
Values(@userid,@age,@sex,@Email) GO
代码如下:
sqlCon1.Open();
// string sql="[Call InfoInsert(?)]";
// System.Data.SqlClient.SqlCommand cmd = new SqlCommand(sql,sqlCon1);
// cmd.CommandType=CommandType.Text;
System.Data.SqlClient.SqlCommand cmd = new SqlCommand();
cmd.CommandType=CommandType.StoredProcedure;
cmd.Connection=sqlCon1;
cmd.CommandText="InfoInsert"; cmd.Parameters.Add("@Name",SqlDbType.NVarChar,50);
cmd.Parameters.Add("@Password",SqlDbType.NVarChar,50);
cmd.Parameters.Add("@Age",SqlDbType.BigInt);
cmd.Parameters.Add("@Sex",SqlDbType.NVarChar,50);
cmd.Parameters.Add("@Email",SqlDbType.NVarChar,50);
cmd.Parameters[0].Value =txtName.Text.Trim();
cmd.Parameters[1].Value =txtPass1.Text.Trim();
cmd.Parameters[2].Value =txtAge.Text.Trim();
cmd.Parameters[3].Value =txtSex.SelectedItem.Text.Trim();
cmd.Parameters[4].Value =txtEmail.Text.Trim();
cmd.ExecuteNonQuery(); //记录执行所影响的行数.
int ReturnNum =cmd.ExecuteNonQuery();
if (ReturnNum > 0)
{
//插入成功
Response.Write("祝贺你插入成功.");
}
else
{
WebPu.ErrNumber ="此用户名已经被注册过了!请换一个用户名.";
Server.Transfer("MyError.aspx");
//插入失败,该用户已经注册过.
}插入记录也成功了 为什么还是返回-1呢 郁闷.
'还有个问题是,我注释的那段代码为什么总提示 "[Call InfoInsert(?)]" 附近有语法错误.
解决方案 »
- serialport控件多窗体接受数据?
- 抓取百度数据时的问题
- access里面的数据插入问题:
- 一个流程排序的算法问题,希望【算法达人】帮忙解决一下!
- 谁能告诉我像OUTLOOK标题条的GDI绘图系统色名称(50分)在线等,高手快来
- C#里判断该值是否可以计算成数字的函数是什么?VB.NET里是 IsNumeric() C#里是什么东西?
- C#编写角色类游戏中经常遇到的角色设置
- C#中怎样用CreateEvent来创建句柄,(类似VC++中创建)
- 如何在DataGrid中再绑定DataGrid
- 问个简单的问题!~~~
- 急需ASP.NET开发人员(深圳),顶者有分
- VC#自带的水晶报表问题:如何让水晶报表显示已经显示在DataGrid中的数据?
这本来就是不返回值的啊.
您可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。
这个问题???????怎么解决??
--------------------------------------
我把它放到程序中,怎么不报错呀!
又怎么用cmd.CommandType=CommandType.Text;呢?
随便去哪找一段调用存储过程的代码套用一下了.
//又怎么用cmd.CommandType=CommandType.Text;呢?
//随便去哪找一段调用存储过程的代码套用一下了.请仔细阅完代码再加以评论。