如何将数据插入Microsoft Access数据库?

时间:2011-06-15 04:30:34

标签: c# .net sql ms-access insert

我正在尝试将数据插入Microsoft Access数据库。

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

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();

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

4 个答案:

答案 0 :(得分:2)

  

当我重建我的应用程序时,我插入的数据已经消失

我怀疑在重建应用程序时你的数据库被覆盖了。

例如,如果您的应用程序包含在构建时复制到输出目录的MDB文件,并且从输出目录中使用,则会发生这种情况。

答案 1 :(得分:1)

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

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

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

除此之外[表格名称可能出现问题且您没有关闭连接],我认为代码没有任何问题。

答案 2 :(得分: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();

答案 3 :(得分:0)

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

尝试一些简单的测试,将您传入的变量替换为具有实际值的参数,这样您就可以隔离问题:

换句话说,替换它:

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");

如果可行,那么您的问题可能在于englishtypethai变量,并且您需要确保他们获得您认为的数据应该得到。