2013-06-05 6 views
1

이 질문을 몇 번이나 보았지만 좋은 대답을 찾을 수 없었습니다. 나는 이것에 몇 시간 동안 고생했다.사용자 이름이 이미 데이터베이스에 존재하는지 확인하는 방법

기본적으로 사용자 이름이 데이터베이스에 저장되어 있고 새 사용자가 등록 할 때 그의 사용자 이름이 사용 가능한지 확인하고 사용 가능한 경우 데이터베이스에 추가합니다. 그리고 그들은 FName이라는 텍스트 박스를 통해 등록합니다. 이 테이블을 Users라고합니다.

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 

SqlCommand cmd = new SqlCommand("SELECT FName FROM Users WHERE FName = ????? usernames????? ", con); 

con.Open(); 
SqlDataReader reader = cmd.ExecuteReader(); 
while (reader.Read()) 
{ 
    Console.WriteLine(reader["text"].ToString()); 
} 

이 코드는 어떻게 수정합니까?

+1

를 사용하여 매개 변수를 객체

  • 항상 CloseDispose 보안 취약점 때문에 ID 문자열을 연결 '텍스트'. – DonBoitnott

  • +0

    .NET이 이미'WebMatrix'와'membership providers'에 내장 된 정확한 기능을 가지고있을 때 바퀴벌레를 재발견하는 것은 수치스러운 것처럼 보입니다. –

    답변

    7
    "SELECT FName FROM Users WHERE FName = @paramUsername" 
    

    한 다음과 같이 cmd를에 매개 변수를 삽입 :

    cmd.Parameters.Add("paramUsername", System.Data.SqlDbType.VarChar); 
    cmd.Parameters["paramUsername"].Value = "Theusernameyouarelookingfor"; 
    
    +0

    빠른 응답을 주셔서 감사합니다 :)하지만 ... cmd.Parameters [ "paramUsername"]. 값 = "Theusernameyouarelookingfor" 정확히 무엇을 거기에 쓸 수 있습니까? 나는 가능한 모든 이름을 찾고있다. psecific하지 ... – user2456977

    +0

    하지만 ... 뭐라구? =) – SamiHuutoniemi

    +0

    ^^ 위를보세요. 나는 내 문장을 편집 ... – user2456977

    1

    확인이 아웃 :

    SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
    
    string validationQuery = "SELECT * FROM Users WHERE FName = @name"; 
    SqlCommand validationCommand = new SqlCommand(validationQuery, connection); 
    validationCommand.Parameters.Add("@name", SqlDbType.VarChar).Value = loginUserSelected; 
    
    connection.Open(); 
    
    SqlDataReader validationReader = validationCommand.ExecuteReader(CommandBehavior.CloseConnection); 
    
    if (!validationReader.Read()) 
    { 
        string insertQuery = "INSERT INTO Users (FName) VALUES (@name)"; 
        SqlCommand insertCommand = new SqlCommand(insertQuery, connection); 
        insertCommand.Parameters.Add("@name", SqlDbType.VarChar).Value = loginUserSelected; 
    
        connection.Open(); 
    
        insertCommand.ExecuteNonQuery(); 
    
        insertCommand.Dispose(); 
    
        connection.Close(); 
    } 
    else 
    { 
        //Uh oh, username already taken 
    } 
    
    validationReader.Close(); 
    
    validationCommand.Dispose(); 
    

    유의할 것들 :

    • 사용 매개 변수를, avo 그것은 당신의 ADO 당신이 대신`FName`를 사용하는 독자 루프를 확인하고 변경하려는 이름을 보내도록 명령에
    +0

    어디에서 SqlDbType, loginUserSelected, CommandBehavior를 가져 오나요 ?? *** SqlDbType과 CommandBehavior를 가져 왔지만 loginUserSelected로 무엇을 할 수 있습니까 ?? – user2456977

    +0

    'loginUserSelected'는 사용자 인터페이스에서 온 것입니다. 사용자가 제출 한 문자열입니다. –

    +0

    따옴표로 묶으시겠습니까? 그것은 지금 오류로 표시됩니다. – user2456977

    관련 문제