IBuySpy Store购物例子中注册时的疑问?是在哪一步验证同名email是否存在

enlyse 2003-05-08 03:45:21
提交信息中如果email已经有了,则会注册失败提示:Registration failed: That email address is already registered.

但我看不清楚程序是在哪一步验证同名email是否已经存在的?谁能告诉我?

在AddCustomer中没看到哪句是验证重名的,存储过程也看不出。。

**************************
//RegisterBtn_Click是报单提交处理函数
private void RegisterBtn_Click(object sender, System.Web.UI.ImageClickEventArgs e) {
// Only attempt a login if all form fields on the page are valid
if (Page.IsValid == true) {

// Store off old temporary shopping cart ID
IBuySpy.ShoppingCartDB shoppingCart = new IBuySpy.ShoppingCartDB();
String tempCartId = shoppingCart.GetShoppingCartId();

// Add New Customer to CustomerDB database
IBuySpy.CustomersDB accountSystem = new IBuySpy.CustomersDB();
String customerId = accountSystem.AddCustomer(Name.Text, Email.Text, Password.Text);//此处添加新用户

if (customerId != "") {

// Set the user's authentication name to the customerId
FormsAuthentication.SetAuthCookie(customerId, false);

// Migrate any existing shopping cart items into the permanent shopping cart
shoppingCart.MigrateCart(tempCartId, customerId);

// Store the user's fullname in a cookie for personalization purposes
Response.Cookies["IBuySpy_FullName"].Value = Server.HtmlEncode(Name.Text);

// Redirect browser back to shopping cart page
Response.Redirect("ShoppingCart.aspx");
}
else {
MyError.Text = "Registration failed: That email address is already registered.";
}
}
}

//AddCustomer是添加用户函数
public String AddCustomer(string fullName, string email, string password)
{

// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("CustomerAdd", myConnection);

// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;

// Add Parameters to SPROC
SqlParameter parameterFullName = new SqlParameter("@FullName", SqlDbType.NVarChar, 50);
parameterFullName.Value = fullName;
myCommand.Parameters.Add(parameterFullName);

SqlParameter parameterEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 50);
parameterEmail.Value = email;
myCommand.Parameters.Add(parameterEmail);

SqlParameter parameterPassword = new SqlParameter("@Password", SqlDbType.NVarChar, 50);
parameterPassword.Value = password;
myCommand.Parameters.Add(parameterPassword);

SqlParameter parameterCustomerID = new SqlParameter("@CustomerID", SqlDbType.Int, 4);
parameterCustomerID.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterCustomerID);

try {
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();

// Calculate the CustomerID using Output Param from SPROC
int customerId = (int)parameterCustomerID.Value;

return customerId.ToString();
}
catch {
return String.Empty;
}
}

//添加用户调用的存储过程
CREATE Procedure CustomerAdd
(
@FullName nvarchar(50),
@Email nvarchar(50),
@Password nvarchar(50),
@CustomerID int OUTPUT
)
AS

INSERT INTO Customers
(
FullName,
EMailAddress,
Password
)

VALUES
(
@FullName,
@Email,
@Password
)

SELECT
@CustomerID = @@Identity

...全文
69 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
enlyse 2003-05-08
  • 打赏
  • 举报
回复
yes,原来EMailAddress字段作了唯一性的约束~~
xuu27 2003-05-08
  • 打赏
  • 举报
回复
没看过IBuySpy Store的源代码和数据库:
不过从程序的写法来看:
它判断customerId 是否= "",
如果=""就是 That email address is already registered.";
而customerId 用依赖于Procedure CustomerAdd的
SELECT @CustomerID = @@Identity

这是提交记录字段添加列的Identity值,所以我猜测它:
Customers表的EMailAddress字段是否是属于唯一或没重复值的列????



老譚山菜 2003-05-08
  • 打赏
  • 举报
回复
帮你顶一下了

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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