我在C#項目中使用SQL Server Compact。我的數據庫有一個用戶表,它有兩列 - 一個ID列(PRIMARY KEY)和一個用戶名列。我通過在Users表中插入用戶名來跟蹤與我的系統進行交互的各種用戶。如何高效地查詢數據庫,如有必要添加行,並獲得結果
當用戶聯繫系統時,如果他們不在那裏,我想在表中記錄他們的名字。顯然,我可以將UNIQUE關鍵字添加到用戶名列,但這意味着我需要處理重複輸入嘗試的異常。一旦名字在表中 - 或者因爲它已經存在或者我不得不添加它 - 我需要獲得相應的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")));
}
}
有什麼辦法可以更有效地做到這一點?
那麼,這應該肯定會進入存儲過程。然後,不管你做什麼,它只會是一次訪問數據庫。 – 2011-05-03 02:20:19
同意。唯一的問題是SQL Server Compact不支持存儲過程。 – 2011-05-03 02:23:26
升級時間。 – 2011-05-03 02:24:00