如何使用数据库C#验证窗口表单的用户输入?

时间:2011-06-22 06:25:44

标签: c# winforms web-services visual-studio-2010 validation

我是c#和窗口形式的新手

我正在做一个Web服务,并使用一个包含datagridview的表单,但是我遇到了很多问题。

如何使用数据库验证用户输入,例如,当用户插入用户名时,但是用户名已经存在于数据库中,我应该提示用户输入另一个用户名。

我之前在前一个帖子中尝试过,我验证只有用户的特定列可以输入0或1 ....

how to validate particular column cell field when editing 它有类似之处吗?

我需要一个网络方法吗?

基本上我想要的是在窗口形式中有一个文本框字段,用户将键入用户名将其添加到数据库,但是,当他们点击添加按钮时,如果用户名已经存在,会有提示。如果不是,它将使用insert web方法将其添加到数据库。

数据是通过网络方法检索的...这意味着我必须使用网络方法帮助我正确检查这个...但是如何?

我的网络方法代码

[WebMethod]  
public DataSet validateUserName()  
{   

    SqlConnection conn = 
        new SqlConnection("Data Source=.\\SQLEXPRESS;
            Initial Catalog=User;Integrated Security=True");   
    SqlCommand dbCommand = new SqlCommand();  
    dbCommand.CommandText = 
        @"SELECT COUNT(*) 
        FROM User 
        WHERE UserName=@UserName"; 
    // this textusername is from the window form  
    dbCommand.Connection = conn;  
    SqlDataAdapter da;   
    da = new SqlDataAdapter();   
    da.SelectCommand = dbCommand;

    DataSet ds = new DataSet();  
    da.Fill(ds);   
    return ds;

}

这是我的窗体表格代码

private void btnAdd_Click(object sender, EventArgs e)

{
    WSBrandData validate = new WSBRandData();
    if (validate.validateUserName(txtUserName.Text))
    {
        MessageBox.Show("UserName is allocated");
        txtUserName.Text = "";
    }
    else
    {
       WSBrandData add = new WSBRandData();

        String[] names = null;

        names = Convert.ToString(DGVBrand.CurrentRow.Cells[1].Value).Split(';');
        String tagg = txtUserName.Text + ";";
        names[1] = tagg;

        DGVBrand.DataSource = add.addUserName(Convert.ToInt32(DGVBrand.CurrentRow.Cells[0].Value), names[0], names[1], Convert.ToInt32(DGVBrand.CurrentRow.Cells[3].Value));
        BindBrand();

    }




}

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

如果您使用某种web方法来插入数据,那么必须有一些方法来根据某些值提取数据。现在将UserName传递给此方法并搜索它,如果找到,则要求用户提供不同的UserName。

如果这不是你想要的,那么请再解释一下你的问题。

答案 2 :(得分:0)

从这里开始:

[WebMethod]  
public Boolean UserNameExists(String userName)  
{   

    SqlConnection conn = 
        new SqlConnection("Data Source=.\\SQLEXPRESS;
            Initial Catalog=User;Integrated Security=True");   
    SqlCommand dbCommand = new SqlCommand();  
    dbCommand.CommandText = 
        @"SELECT COUNT(*) 
        FROM User 
        WHERE UserName='" + userName + "'";
    // this textusername is from the window form  
    dbCommand.Connection = conn;  

    conn.Open();

    int matchesCount = int.Parse(dbCommand.ExecuteScalar().ToString());

    conn.Close();  

    return matchesCount != 0;

}

在表单应用程序中:

if (webReference.Type.UserNameExists(this.userNameTextBox.Text) )
{
    // Do something
}
else
{
    // Do something else
}