0

我嘗試向我的數據庫中插入數據,所有操作都已成功完成,但數據庫在執行SQL查詢後未更新。這是基於Windows的應用程序。我把連接字符串放在app.config文件中。ExecuteNonQuery插入函數成功觸發但數據庫不更新

當我運行這個應用程序代碼。並插入數據,它顯示我的味精「數據插入」,但當我檢查數據庫沒有數據更新數據庫....給我一些解決方案。

我使用Visual Studio 2013和SQL Server 2012的

這裏是我的代碼:

namespace Sample 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["cons"].ConnectionString.ToString()); 
       sqlcon.Open(); 
       string str = "insert into tab(name,pwd) values('" + textBox1.Text.ToString() + "','" + textBox2.Text.ToString() + "')"; 
       SqlCommand cmd = new SqlCommand(str, sqlcon); 
       cmd.ExecuteNonQuery(); 
       MessageBox.Show("Data inserted"); 
       cmd.Clone(); 
      } 
      catch(Exception E) 
      { 
       MessageBox.Show("No data inserted"); 
      } 
     } 
    } 
} 

的App.config

<configuration> 
    <connectionStrings> 
     <add name="cons" 
      connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename='|DataDirectory|\Database1.mdf';Integrated Security=True"/> 
    </connectionStrings> 
</configuration> 
+0

向我們顯示您的**連接字符串**,請 – 2014-10-05 15:44:30

+3

使用該連接字符串,VS將複製數據f ile('database1.mdf')到您的應用程序運行的**輸出目錄**('。\ bin \ debug'),插入將發生在該文件上。你可能只是看着錯誤的文件,對於數據......你可以通過爲你的'database1.mdf'指定一個**絕對的完整路徑**而不是依賴'| DataDirectory |'來避免這種情況。 ... – 2014-10-05 15:48:04

+0

那麼,(。\ bin \ debug)中有另一個文件,其名稱是(Database.mdf)。它在我運行應用程序時被更新。但(Database1.mdf)未更新。 – 2014-10-05 15:57:49

回答

1

嘿,我解決這個問題,我自己

我只是替換連接字符串的完整路徑(| DataDirectory目錄| \ Database.mdf)......像這樣

<configuration> 
<connectionStrings> 
<add name="cons" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename='C:\Users\Dhaval\documents\visual studio 2013\Projects\Sample\Sample\Database.mdf';Integrated Security=True"/> 
</connectionStrings> 
</configuration> 

所以(。\ bin \ debug)「Database.mdf」文件的連接字符串訪問權限數據庫..

0

首先,以防止注入攻擊,以避免出現語法錯誤,使用參數。其次,爲確保資源得到妥善處理,請使用「使用」聲明。第三,顯示拋出的錯誤消息。以下(未經測試)代碼說明了這些技術。另外,什麼是cmd.Clone()用於?

 private void button1_Click(object sender, EventArgs e) 
    { 
     SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["cons"].ConnectionString.ToString()); 
     try 
     { 
      using (sqlcon) 
      { 
       sqlcon.Open(); 
       string str = "insert into tab(name,pwd) values(@Value1, @Value2)"; 
       using (SqlCommand cmd = new SqlCommand(str, sqlcon)) 
       { 
        cmd.Parameters.Add(new SqlParameter("Value1", TextBox1.Text)); 
        cmd.Parameters.Add(new SqlParameter("Value2", TextBox2.Text)); 
        cmd.ExecuteNonQuery(); 
        MessageBox.Show("Data inserted"); 
        //cmd.Clone(); 
       } 
      } 
     } 
     catch (Exception E) 
     { 
      throw new Exception(E.Message); 

     } 
     finally 
     { 
      sqlcon.Close(); 
     } 
    } 
+0

好吧,這是很好的工作,但鋼的問題是一樣的..數據庫沒有更新...沒有插入表中。 :( – 2014-10-05 15:35:33

+0

我認爲上面的代碼沒有問題.....可能是與SQL服務器管理器的問題......但它是如何工作的,我不知道...... – 2014-10-05 15:38:08

+0

有沒有錯誤發佈? – 2014-10-05 16:38:07

相關問題