2011-06-15 60 views
2

我试图将数据插入到Microsoft Access数据库。如何将数据插入Microsoft Access数据库?

我将数据插入Access数据库,但第一次和第二次是显示我插入的数据的唯一次数。当我重建我的应用程序时,我插入的数据消失了。我不知道他们去哪里,也不知道。我使用.NET框架开发C#。下面是代码的相关部分:

OleDbConnection con = new OleDbConnection(ConfigurationManager.ConnectionStrings["Constr"].ConnectionString); 
OleDbCommand com = new OleDbCommand(); 
com.Connection = con; 
com.CommandText = "Insert into Language(English,Type,Thai) values(@eng,@type,@thai)"; 
com.Parameters.AddWithValue("@eng", english); 
com.Parameters.AddWithValue("@type", type); 
com.Parameters.AddWithValue("@thai", thai); 
con.Open(); 
com.ExecuteNonQuery(); 

我写了那段代码,但我觉得很奇怪。它不显示任何错误或异常,但我的数据没有正确插入。这是插入数据的正确方法吗?如果是这样,为什么它没有被插入?

+0

您使用的是哪个版本的Access DB? – NoviceProgrammer 2011-06-15 06:24:55

+0

你说过:“当我重建我的应用程序时,我插入的数据消失了。” - 但后来你说“我的数据没有正确插入” - 就是这样 - 是插入的数据然后在重建时消失还是根本没有插入? – 2011-06-15 09:51:34

回答

1

我认为语言应该是一个保留字,你应该把它包装在[]括号中。

还要考虑包装在using块中的代码,例如

using (OleDbConnection con = new OleDbConnection(...)) 
{ 
    using (OleDbCommand com = new OleDbCommand(sqlString, con)) 
    { 
     //code 
    } 
} 

除此之外,我没有看到任何错误的代码[用表名和你不关闭你的连接可能问题] 。

+0

语言是一个保留字。我也想知道英语,类型和泰语变量的值。 – Fionnuala 2011-06-15 07:38:08

0

可能乌尔连接字符串不使用.udl文件 只需按照链接 http://www.gotknowhow.com/articles/test-a-database-connection-string-using-notepad

纠正,您可以在

您还可以查看图所示

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\ruby\\Desktop\\screenShots\\ruby.mdb;Persist Security Info=False"); 
     con.Open(); 
     OleDbCommand cmd = new OleDbCommand("insert into raj(Name,Roll) values('XYZ',12);",con); 
     cmd.ExecuteNonQuery(); 
0

您的定义参数代码查询,但我没有看到任何地方这些参数绑定到实际的数据...

尝试一些简单的测试,将您传入的变量作为参数与实际值val UE的,这样你就可以找出问题所在:像这样

com.Parameters.AddWithValue("@eng", english); 
com.Parameters.AddWithValue("@type", type); 
com.Parameters.AddWithValue("@thai", thai); 

的东西:

换句话说,更换此

//I don't know the data types of your fields, so I'm guessing 
com.Parameters.AddWithValue("@eng", "Test1"); 
com.Parameters.AddWithValue("@type", myEnum.Latin); 
com.Parameters.AddWithValue("@thai", "Test1a"); 

如果这样的作品,那么你的问题可能在于english,typethai变量,您将需要确保他们获得您认为应该得到的数据。

2

当我重建我的申请,我插入的数据都没了

我怀疑,当应用程序重新构建你的数据库被覆盖。

例如,如果您的应用程序包含复制到build上的输出目录并从输出目录使用的MDB文件,则可能发生这种情况。

相关问题