0

我正在使用 c# 创建登录系统。我想检查用户输入的用户名是否已经是数据库的一部分。这是连接到数据适配器的代码,然后在我从复选框中获取数据后更新它。

NorthwindDataSetTableAdapters.CustomersTableAdapter north = new NorthwindDataSetTableAdapters.CustomersTableAdapter();
NorthwindDataSet.CustomersDataTable northtable = north.GetData();


NorthwindDataSet northwindDataSet1 = new NorthwindDataSet();
NorthwindDataSet.CustomersRow newCustomersRow =
northwindDataSet1.Customers.NewCustomersRow();

newCustomersRow.Username = TextBox1.Text.ToString();
newCustomersRow.Password = TextBox2.Text.ToString() ;
newCustomersRow.FirstName = TextBox3.Text.ToString();
newCustomersRow.Surname = TextBox4.Text.ToString();

northwindDataSet1.Customers.Rows.Add(newCustomersRow);

north.Update(northwindDataSet1.Customers);
northwindDataSet1.Customers.AcceptChanges();

if (Page.IsValid)
 Response.Redirect("thankyou.aspx"); 

检查Username字段中是否存在重复数据的最佳方法是什么?

4

3 回答 3

3

叫我疯了,但我会做类似的事情(使用“dapper”)

string username = ...
int existingId = connection.Query<int?>(
    @"select top 1 Id from Users where UserName = @username",
     new { username }).FirstOrDefault();
 if(existingId.HasValue) {
       // not available - do something
 }      

请注意,这里存在竞争条件,因此您仍然应该对列本身具有唯一约束。您可能还想注意区分大小写:“Fred”与“fred”的用户名是否相同?

于 2013-05-12T14:21:32.153 回答
0

为什么不将表列标记为主键或唯一?然后在 try{}catcht{} 语句中处理异常。

于 2013-05-12T14:18:56.427 回答
0

你试过使用DataTable.Select吗?就像是:

var UserFound = NorthTable.Select("UserName = '" + TextBox1.Text + "'");
if(UserFound.Length != 0)
{
    // do something...
}
于 2013-05-12T14:41:12.863 回答