在app_code文件夹下建立一个userdataset.xsd文件,建立一个UsersTableAdapter对象,并为其建立一个adduser(@username,@userpwd,@userask,@useranswer,@useremail,@userip, @userlogincount)方法,此方法调用一个存储过程,存储过程如下:
CREATE procedure adduser
@username nvarchar(50),
@userpwd nvarchar(50),
@userask nvarchar(100),
@useranswer nvarchar(100),
@useremail nvarchar(200),
@userip nvarchar(15),
@userlogincount int
AS
declare @Count int
select @Count=Count(User_Id) from users where
User_Name=@username
if @Count=0
insert into users
(User_Name,User_Pwd,User_Ask,User_Answer,User_Email,User_Ip,User_LoginCount) valueS
(@username,@userpwd,@userask,@useranswer,@useremail,@userip,@userlogincount)
return 1
GO避免了添加名字相同的数据
C#程序中:string strip=Request.UserHostAddress;
UserDataSetTableAdapters.UsersTableAdapter usertba =new UserDataSetTableAdapters.UsersTableAdapter();
usertba.adduser(Tusername.Text, Tpass.Text, Task.Text, Tanswer.Text, Tmail.Text, strip, 1));但我在C#程序中怎么判断添加成功或名字相同???
CREATE procedure adduser
@username nvarchar(50),
@userpwd nvarchar(50),
@userask nvarchar(100),
@useranswer nvarchar(100),
@useremail nvarchar(200),
@userip nvarchar(15),
@userlogincount int
AS
declare @Count int
select @Count=Count(User_Id) from users where
User_Name=@username
if @Count=0
insert into users
(User_Name,User_Pwd,User_Ask,User_Answer,User_Email,User_Ip,User_LoginCount) valueS
(@username,@userpwd,@userask,@useranswer,@useremail,@userip,@userlogincount)
return 1
GO避免了添加名字相同的数据
C#程序中:string strip=Request.UserHostAddress;
UserDataSetTableAdapters.UsersTableAdapter usertba =new UserDataSetTableAdapters.UsersTableAdapter();
usertba.adduser(Tusername.Text, Tpass.Text, Task.Text, Tanswer.Text, Tmail.Text, strip, 1));但我在C#程序中怎么判断添加成功或名字相同???
CREATE procedure adduser
@userid int output,
@username nvarchar(50),
@userpwd nvarchar(50),
@userask nvarchar(100),
@useranswer nvarchar(100),
@useremail nvarchar(200),
@userip nvarchar(15),
@userlogincount int
AS
declare @Count int
select @Count=Count(User_Id) from users where
User_Name=@username
if @Count=0
insert into users
(User_Name,User_Pwd,User_Ask,User_Answer,User_Email,User_Ip,User_LoginCount) valueS
(@username,@userpwd,@userask,@useranswer,@useremail,@userip,@userlogincount)
SET @userid = @@IDENTITY
return 1
GO怎么在C#中怎么获得@userid
string strip=Request.UserHostAddress;
UserDataSetTableAdapters.UsersTableAdapter usertba =new UserDataSetTableAdapters.UsersTableAdapter();
int userid=1;
usertba.adduser(ref userid,Tusername.Text, Tpass.Text, Task.Text, Tanswer.Text, Tmail.Text, strip, 1));但这样总报错:
无法将ref int转为ref int?
能说详细点吗?
判断 如果重名
set @flag = 1;
return;在外部取 这个output 参数.
asp.net(C#)中怎么获取这个参数
?
Database db = DatabaseFactory.CreateDatabase();
string sqlCommand = "UserProcedureXXX";
DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);
db.AddParameter(dbCommand, "@ReturnValue", DbType.Int32, 4, ParameterDirection.ReturnValue, false, 0, 0, String.Empty, DataRowVersion.Default, null);
using (IDataReader dataReader = db.ExecuteReader(dbCommand))
{
while (dataReader.Read())
{
models.Add(PopulateFromDataReader(dataReader));
}
}
totalRecords = (int)db.GetParameterValue(dbCommand, "@ReturnValue");
return models;
UserDataSetTableAdapters.UsersTableAdapter usertba =new UserDataSetTableAdapters.UsersTableAdapter(); //建立一个UsersTableAdapter类的实例对象
int userid=1; //声明int变量
usertba.adduser(ref userid,Tusername.Text, Tpass.Text, Task.Text, Tanswer.Text, Tmail.Text, strip, 1)); //执行usertba的方法adduser(),其中方法里使用了存储过程,userid返回参数
=============================
但这样总报错:
无法将ref int转为ref int?
问题的关键部分
asp.net(C#)中怎么获取这个参数?
---------------------------------------------------
cmd.Parameters["参数"].Direction = ParameterDirection.Output;
cmd.Parameters["参数"].Value //值
在存储过程中添加一个可选择的参数@userip nvarchar(15)
但还是没弄明白,原先为什么总报错(无法将ref int转为ref int?)CREATE procedure adduser
@username nvarchar(50),
@userpwd nvarchar(50),
@userask nvarchar(100),
@useranswer nvarchar(100),
@useremail nvarchar(200),
@userip nvarchar(15),
@userlogincount int,
@userdd nvarchar(50) output
AS
declare @Count int
select @Count=Count(User_Id) from users where
User_Name=@username
if @Count=0
begin
insert into users
(User_Name,User_Pwd,User_Ask,User_Answer,User_Email,User_Ip,User_LoginCount) valueS
(@username,@userpwd,@userask,@useranswer,@useremail,@userip,@userlogincount)
set @userdd='ok'
end
else
begin
set @userdd='no'
end
GO
System.Nullable<int> userid = new int();
usertba.adduser(ref userid,Tusername.Text, Tpass.Text, Task.Text, Tanswer.Text, Tmail.Text, strip, 1));
就OK了。