检查ASP.NET中的数据库中是否存在用户

时间:2014-05-28 10:38:42

标签: c# asp.net database exists

我的问题是我想检查注册页面中的用户名是否已经存在于数据库中以防止多个相同的名称但是出现错误

An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

Additional information: Incorrect syntax near '*'.

这是我的代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        if(IsPostBack)           //tworzymy Zapytanie wraz z połączeniem z bazą
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["registrationConn"].ConnectionString);
            conn.Open();
            string sprawdz = "Wybierz count (*) from Uzytkownicy where Nazwa_uzytkownika='"+un.Text+"'";
            SqlCommand com = new SqlCommand(sprawdz, conn);
            int temp = Convert.ToInt32((String)com.ExecuteScalar().ToString());  <----The error moment
            if(temp==1)
            {
                Response.Write("Uzytkownik o podanej nazwie już istnieje.");
            }
            conn.Close();
        } 

拜托,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

尝试替换

string sprawdz = "Wybierz count (*) from Uzytkownicy where Nazwa_uzytkownika='"+un.Text+"'";

string sprawdz = "select count (*) from Uzytkownicy where Nazwa_uzytkownika='"+un.Text+"'";

我不是波兰语的发言人,但在Google上检查过Wybierz是一个波兰语,意思是选择Link

所以在逻辑上和句法上应该选择不是Wybierz

答案 1 :(得分:0)

在这种情况下,我建议使用SQL 存储过程执行此操作。

为什么呢? 存储过程编译一次并以可执行的形式存储,因此过程调用快速有效。可执行代码自动缓存,在用户之间共享。这降低了内存需求和调用开销。

所以这样的代码:

SqlCommand cmd = new SqlCommand("CheckIfUserExists",conn);
cmd.CommandType=CommandType.StoreProcedure;
cmd.Parameters.AddWithValue("@UserName",un.Text);
cmd.Parameters.AddWithValue("@IsExists",0);
int rowAffected=cmd.ExecuteNonQuery();
// rowAffected contains your Result

这样的程序:

CREATE PROCEDURE  CheckIfUserExists   
(    
    @UserName Varchar(50),  
    @IsExists INT OUTPUT   
)   
AS      

If exists (select Nazwa_uzytkownika from Uzytkownicy where Nazwa_uzytkownika = @username)   
Begin

Set @IsExists = 1

End     
Else   
begin

Set @IsExists = 0

End

Return @IsExists

希望所以我对此做得很好。

相关问题