2013-10-29 112 views
0

我一直試圖讓下面的代碼寫入我的SQL Server CE數據庫幾個月沒有成功。我的嘗試捕獲不會引發錯誤,但我的數據沒有寫入。有沒有人看到我這樣做的方式有什麼問題?需要幫助寫入SQL Server CE表

conn = new SqlCeConnection("Data Source = LaZSolutions.sdf"); 
conn.Open(); 

var id = Guid.NewGuid(); 

SqlCeCommand cmd = conn.CreateCommand(); 
cmd.CommandText = "INSERT INTO Customers (FirstName, LastName, Address, City, State, Zip, Phone, Mobile, Email, CustomerNum) VALUES(@FirstName, @LastName, @Address, @City, @State, @Zip, @HomePhone, @MobilePhone, @Email, @CustomerNum)"; 

cmd.CommandType = CommandType.Text; 
cmd.Connection = conn; 
cmd.Parameters.AddWithValue("@FirstName", txtFName.Text); 
cmd.Parameters.AddWithValue("@LastName", txtLName.Text); 
cmd.Parameters.AddWithValue("@Address", txtAddress.Text); 
cmd.Parameters.AddWithValue("@HomePhone", txtHPhone.Text); 
cmd.Parameters.AddWithValue("@MobilePhone", txtMPhone.Text); 
cmd.Parameters.AddWithValue("@City", txtCity.Text); 
cmd.Parameters.AddWithValue("@State", txtState.Text); 
cmd.Parameters.AddWithValue("@Zip", txtZip.Text); 
cmd.Parameters.AddWithValue("@Email", txtEmail.Text); 
cmd.Parameters.AddWithValue("@CustomerNum", id); 

cmd.ExecuteNonQuery(); 

conn1 = new SqlCeConnection("Data Source = LaZSolutions.sdf"); 
conn1.Open(); 

SqlCeCommand cmd1 = conn1.CreateCommand(); 
cmd1.CommandText = "INSERT INTO Orders (OrderNum, OrderDate, Cost, [Open], Comments) VALUES(@OrderNum, @OrderDate, @Cost, @Open, @Comments)"; 

cmd1.CommandType = CommandType.Text; 
cmd1.Connection = conn1; 
cmd1.Parameters.AddWithValue("@OrderNum", txtOrderNum.Text); 
cmd1.Parameters.AddWithValue("@OrderDate", txtOrderdate.Text); 
cmd1.Parameters.AddWithValue("@Cost", lblPrice.Text); 
cmd1.Parameters.AddWithValue("@Open", open); 
cmd1.Parameters.AddWithValue("@CustomerNum", id); 
cmd1.Parameters.AddWithValue("@Comments", txtComments.Text); 

cmd1.ExecuteNonQuery(); 
conn1.Close(); 
conn.Close(); 
+0

您不需要兩次打開連接 – Jonesopolis

+0

您是否在項目項目中列出了您的SDF文件?您是否使用「服務器管理器」窗口檢查此文件的內容?服務器管理器顯示的數據庫文件的位置在哪裏? – Steve

回答

2

您的代碼似乎是正確的(雖然你是不是你的封閉與using語句和開放的一次性元件,而不需要兩次相同的連接),但是,您的SDF文件沒有任何路徑連接字符串中列出。這意味着這個文件應該在你的程序運行的同一個文件夾中。當您調試程序時,可執行文件將在BIN \ DEBUG目錄中運行,並且如果插入成功,數據將被插入BIN \ DEBUG目錄中的SDF文件中。

您可以檢查您的插入是否工作將一個整型變量賦值給ExecuteScalar的返回值。如果這個變量是1,那麼你的代碼已經插入了記錄。

現在,如果您使用Server Manager檢查文件的內容,則需要確保顯示的數據庫與BIN \ DEBUG中的數據庫相同,而不是通常存在於項目文件夾根目錄中的基本文件。

另一種可能性是文件所在文件夾的寫入權限有問題,但這會導致異常。