C# 프로젝트에서 SQL Server Compact를 사용하고 있습니다. 내 데이터베이스에는 ID 열 (PRIMARY KEY)과 사용자 이름 열의 두 열이있는 사용자 테이블이 있습니다. 사용자 테이블에 사용자 이름을 삽입하여 시스템과 인터페이스하는 다양한 사용자를 추적합니다.데이터베이스를 효율적으로 쿼리하고 필요한 경우 행을 추가하고 결과를 얻는 방법
사용자가 시스템에 접속하면 테이블에 이름이없는 경우 해당 이름을 기록하고 싶습니다. 분명히 UNIQUE 키워드를 Username 열에 추가 할 수는 있지만 중복 입력 시도에 대한 예외를 처리해야한다는 것을 의미합니다. 이름이 테이블에 있으면 (이미 존재했거나 추가해야했기 때문에) 해당 ID를 얻어야합니다.
다음은 촬영할 작업 코드입니다.
public void GetUserId(string username)
{
using (SqlCeCommand selcmd= new SqlCeCommand(
"SELECT * FROM users WHERE username = @user", conn))
{
selcmd.Parameters.AddWithValue("@user", username);
SqlCeResultSet rs = selcmd.ExecuteResultSet(ResultSetOptions.Scrollable);
if (!rs.HasRows)
{
using (SqlCeCommand inscmd= new SqlCeCommand(
"INSERT INTO users (username) values (@user)", conn))
{
inscmd.Parameters.AddWithValue("@user", username);
inscmd.ExecuteNonQuery();
}
rs = selcmd.ExecuteResultSet(ResultSetOptions.Scrollable);
}
rs.ReadFirst();
return (rs.GetInt32(rs.GetOrdinal("id")));
}
}
더 효율적으로 수행 할 수있는 방법이 있습니까?
음, 이것은 반드시 저장 프로 시저에 있어야합니다. 그런 다음, 당신이 무엇을 하든지, 그것은 데이터베이스로의 단 하나의 여행 일 것입니다. –
동의 함. 유일한 문제는 SQL Server Compact가 저장 프로 시저를 지원하지 않는다는 것입니다. –
업그레이드 시간. –