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

本文关键字:NET 数据库 ASP 用户 是否 存在 检查 | 更新日期: 2023-09-27 18:05:26

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

类型为"System.Data.SqlClient"的异常。在System.Data.dll中发生了SqlException',但未在用户代码中处理附加信息:"*"附近的语法不正确。
下面是我的代码:
    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();
        } 
请问,有人能帮我吗?

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

尝试替换

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

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

我不会波兰语,但在谷歌上查到了Wybierz是一个波兰语单词,意思是选择(链接)

所以逻辑上和语法上都应该选择而不是Wybierz

在这种情况下,我建议使用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