我正在尝试将数据插入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();
我写了那段代码,但我认为这很奇怪。它没有显示任何错误或异常,但我的数据未正确插入。这是插入数据的正确方法吗?如果是这样,为什么它没有插入?
答案 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");
如果可行,那么您的问题可能在于english
,type
和thai
变量,并且您需要确保他们获得您认为的数据应该得到。