我有一个注册表格,我想检查用户以前没有注册过。防止用户注册两次
我的代码在下面。我认为存在两个问题:(1)调用方法和(2)将参数传递给存储过程。我的症状是,这导致一个异常,说输入参数未初始化。
create procedure fakeuser @username nvarchar(250),@codemeli nchar(10),@email nvarchar(50), @user nvarchar(250) output,@code nchar(10)output,@mail nvarchar(50)output
as
if exists(select username,email,codemeli from karbar where [email protected])
set @[email protected]
else if exists(select username,email,codemeli from karbar where [email protected])
set @[email protected]
else if exists(select username,email,codemeli from karbar where [email protected])
set @mail= @email
下面是C#代码:
public static string confirm(string username, string email, string codemeli)
{
string constring = "data source=.;database=site;integrated security=true;";
SqlConnection connection = new SqlConnection(constring);
// Command - specify as StoredProcedure
SqlCommand command = new SqlCommand("fakeuser", connection);
command.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@username", SqlDbType.NVarChar);
param.Direction = ParameterDirection.Input;
param.Value = username;
command.Parameters.Add(param);
SqlParameter param2 = new SqlParameter("@email", SqlDbType.NVarChar);
param2.Direction = ParameterDirection.Input;
param2.Value = username;
command.Parameters.Add(param2);
SqlParameter param3 = new SqlParameter("@codemeli", SqlDbType.NChar);
param3.Direction = ParameterDirection.Input;
param3.Value = username;
command.Parameters.Add(param3);
// Return value as parameter
SqlParameter returnuser = new SqlParameter("@user", SqlDbType.NVarChar);
returnuser.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(returnuser);
SqlParameter returncode = new SqlParameter("@code", SqlDbType.NChar);
returncode.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(returncode);
SqlParameter returnmail = new SqlParameter("@mail", SqlDbType.NVarChar);
returnmail.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(returnmail);
// Execute the stored procedure
connection.Open();
command.ExecuteNonQuery();
connection.Close();
谢谢。
究竟是什么不起作用?您需要使用Visual Studio调试器,SQL Server Management Studio和其他编程工具来确定哪部分代码导致了问题。如果您发现问题并找不到解决方法,我们很乐意为您提供帮助,但我认为您会发现大多数人不会为您找到问题所在。 – 2012-07-09 14:50:00