2013-08-22 31 views
2

我正在開發一個C#Windows應用程序。我使用了訪問數據庫。當我從數據庫中選擇數據時,我正在獲取數據,但是當插入數據時它不會被插入,也不會顯示任何錯誤。數據沒有插入到Access數據庫中

但是,當我在Access中運行相同的插入查詢它被插入。這裏是我的代碼:

public void connCheck() 
    { 
     try 
     { 
      cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Database\MyDatabase.mdb;Persist Security Info=True;Jet OLEDB:Database Password=2013"); 
      if (cn.State == ConnectionState.Closed) 
       cn.Open();     
     } 
     catch (Exception exp) 
     { 
      MessageBox.Show(exp.ToString()); 
     } 
    } 

    public bool ExecuteNonQuery() 
    { 
     try 
     { 
      connCheck(); 
      string sqlQuery = "INSERT INTO tblResult(ExamSet,SetId,FullMarks,ObtainedMarks,MarksPercentage,ElapsedTime,LastQIndex,CreatedDate,Completed) 
      Values(1,27,'200.00',0,0,0,1,DATE(),'N')"; 
      cmd.CommandType = CommandType.Text; 
      cmd.Connection = cn; 
      cmd.CommandText = sqlQuery;     
      cmd.ExecuteNonQuery(); 
      return true; 
     } 
     catch(OleDbException ex) 
     { 
      ErrorMsg = ex.ToString(); 
      return false; 
     } 
     finally 
     { 
      cn.Close(); 
      cn.Dispose(); 
      cmd.Dispose(); 
     } 
    } 
+3

如果你發佈了sqlQuery的內容可能會有所幫助 – TGH

+0

我在代碼中添加了我的查詢請檢查。 – Raghubar

+0

給斷點,並檢查你所缺乏的地方... – Sasidharan

回答

2

如何更換您的查詢這樣的代碼

string sqlQuery = "INSERT INTO tblResult([ExamSet],[SetId],[FullMarks],[ObtainedMarks],[MarksPercentage],[ElapsedTime],[LastQIndex],[CreatedDate],[Completed]) 
     Values(1,27,'200.00',0,0,0,1,DATE(),'N')"; 

更新:

的問題之一可能是Security warning禁用的內容。

嘗試,看看這是否正常工作(去你MDB):

  1. 點擊「外部數據」選項卡上
  2. 應該有一個安全警告,指出「在數據庫中的某些內容已被禁用「
  3. 單擊‘選項’按鈕
  4. 選擇‘啓用此內容’,然後點擊確定按鈕
+0

感謝您的建議,但它不工作。 – Raghubar

+0

我試過了不行。 – Raghubar

0

參數化嘗試d通過cmd.Parameters.Add或AddRange查詢。例如

var cmd = new SqlCommand("INSERT INTO tbl_name (a, b, c) VALUES (@a, @b, @c)"); 
cmd.Parameters.AddRange(new[] { new SqlParameter("@a", field1), new SqlParameter("@b", field2), new SqlParameter("@c", field2) }); 
3

你沒有定義您的CMD ..
加入這一行

OledbCommand cmd=new OledbCommand(); 
+0

我試過了不行... – Raghubar

+0

我覺得訪問安全有問題.. – Raghubar

0

(發佈代表OP)的

感謝大家的幫助,我得到了解決方案。其實在我的代碼中沒有問題。問題是我在一個文件夾中創建了數據庫文件。但是當我構建項目時,它創建了一個具有相同文件夾的重複數據庫,並在bin文件夾中創建一個文件名

所以每次它被插入到該數據庫中。我正在檢查我創建的數據庫文件。所以我認爲這是行不通的。