2013-08-22 30 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文件夹中创建一个文件名

所以每次它被插入到该数据库中。我正在检查我创建的数据库文件。所以我认为这是行不通的。