2010-07-23 31 views
1

當我運行該SQL:插入問題在C#中,使用的SqlCommand

insert into table1(ID,Name) values ('10','Saeed'); 

似乎記錄已被插入了,如果我讀使用(select * from table1)表它顯示我插入的記錄,但關閉程序後,它消失。

它的代碼:

string constr="Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|" + 
    "\\Database1.mdf;Integrated Security=True;User Instance=True"; 

SqlConnection con = new SqlConnection(constr); 
con.Open(); 

SqlCommand cmd = new SqlCommand(
    "insert into st (ID,Name) values ('10','saeed');", con); 

cmd.ExecuteNonQuery(); 
cmd.Close(); 

我在裏面手動插入一些記錄,當我讀數據庫,手動插入的記錄存在。

這不是一個交易問題不會被交易解決!

+1

也許你需要提交插入? – pascal 2010-07-23 12:01:57

+0

如何提交? – Saeed 2010-07-23 12:14:12

+0

SqlTransaction tran = con.BeginTransaction(); ... tran.Commit(); – pascal 2010-07-23 13:53:29

回答

2

問題聽起來像是你開始交易,忘了提交。但是,如果您使用的是您發佈的確切代碼,則這不是交易問題,因爲您沒有使用該代碼。

這讓我覺得你的連接字符串會出現一些奇怪的現象。

踢和笑聲試圖改變你的連接字符串,這樣的事情

Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=True; 
+0

請問你寫信給我的確切連接字符串,你可以看到我的問題。 – Saeed 2010-07-23 18:36:47

+0

Initial Catalog = Database1; Data Source = ; Integrated Security = True 另請嘗試更改當前連接字符串中的User Instance = False。記錄可能僅在每個用戶實例中插入。這可能是您關閉應用程序後未看到新插入記錄的原因。 – dretzlaff17 2010-07-23 20:34:44

+0

投了個好問題。 – dretzlaff17 2010-07-23 20:38:06

2

猜測:
您正在使用SQL Server Express和「Database1.mdf」項目中工作的配置(在屬性窗口中)爲「複製到輸出目錄」值「始終」

+0

我有同樣的感覺。讓我們知道,如果這是解決方案 – Nealv 2010-07-23 12:03:16

+0

和什麼shuold我做? – Saeed 2010-07-23 12:15:01

+0

將屬性更改爲「If Newer」或「Do not copy」。只要文件被複制,數據就會丟失。 – 2010-07-23 12:21:05

1

嘗試指定: 「Initial Catalog = InstanceDB;」以及確保它在重新啓動應用程序時不會創建新的數據庫名稱。

0

錯誤在你的代碼本身 其

con.Close();

cmd.Close(); 

存在對SqlCommand

+0

這是一個錯誤。 con.Cloce();是正確的。 – Saeed 2010-07-23 12:09:45

0

我同意帕斯卡爾沒有close方法。聽起來像事務沒有被提交。

(編輯從我下面的評論可提供更清晰的代碼塊)

con.Open(); 
trans = con.BeginTransaction(); 

SqlCommand cmd = new SqlCommand("insert into st (ID,Name) values ('10','saeed');", con); 

cmd.ExecuteNonQuery(); 
tran.Commit(); 
+0

如何委員會插入? – Saeed 2010-07-23 12:13:40

+0

好吧,基本上是這樣的: con.Open(); trans = con.BeginTransaction(); SqlCommand cmd = new SqlCommand( 「insert into st(ID,Name)values('10','saeed');」,con); cmd。的ExecuteNonQuery(); tran.Commit(); 這是我的頭頂。你會想做一些Googleing來確認細節。 – Henry 2010-07-23 12:26:37