我一直在嘗試使用相同的SqlConnection
和SqlCommand
對象來執行不同的命令。使用sql命令不止一次使用不同的命令
第一個檢查重複,第二個插入數據,如果用戶輸入的數據不重複。
這裏是我的代碼示例:
using (SqlConnection conn = new SqlConnection(ConnStr))
{
string Command = "SELECT CountryName FROM [Countries] WHERE CountryName = @Name";
using (SqlCommand comm = new SqlCommand(Command, conn))
{
comm.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 20);
comm.Parameters["@Name"].Value = Name;
comm.Parameters.Add("@IsVisible", System.Data.SqlDbType.Bit);
comm.Parameters["@IsVisible"].Value = IsVisible;
conn.Open();
if (comm.ExecuteScalar() == null)
{
Command = "INSERT INTO [Countries] (CountryName, IsVisible) VALUES (@Name, @IsVisible);";
comm.ExecuteNonQuery();
}
}
我試圖用一個連接保存訪問數據庫。
的問題是:
第一個命令運行不錯,但其插入到 數據庫 第二個命令將無法正常工作(不加任何 記錄到數據庫)和當我 試圖顯示受影響的行它 給了我-1!
的問題是:
這是檢查 重複記錄約束 國內獨一無二的理想方式?以及爲什麼第二個 命令沒有執行?
因爲[連接池](http://msdn.microsoft.com/zh-cn/library/8xx3tyca.aspx),您不明確*需要*使用相同的數據庫連接來保存到數據庫的行程,幾乎肯定會被使用(除非你明確禁用了它)。如果您執行兩次(使用相同的連接或不),將有兩個調用數據庫。 – steinar 2011-03-28 23:07:12
感謝您的提示+1 ..但在您看來,您是否認爲有一種方法可以在我的情況下節省旅行以減少Db的負擔? – lKashef 2011-03-28 23:11:44
絕對是如果你使用存儲過程。這是一個選擇嗎? – steinar 2011-03-28 23:15:22