问题:在VS2008中,编写WinForm程序,利用OLEDB组件访问ACCESS数据库,调试时,对数据库记录的添加、修改、删除,均正常。但退出程序后,手动双击打开数据库文件,发现数据库中的文件无变化。
解决:这是一个很简单的问题,但搞了二天,才在网上找到答案。原因是程序编译时,将数据库文件拷贝到输出目录下了。也就是说被修改的MDB数据库在输出目录下,不在原程序目录下,原程序目录下的数据库是不会被修改的。
在VS2008中,利用OLEDB访问ACCESS的一个小程序,本人已编译通过执行。网上看到的一些访问程序太麻烦了,我的这个非常简单,哈哈。我的这一段过程是WinForm程序,如果要改为WEB程序,请自作修改。
ACCESS数据库文件名为ZhaiKouChe.mdb,中间有一个表,名为t_load,表中有二个字段,一个为ID,是自动增长的,一个为road_name,是文本。
//添加命名空间 using System.Data; using System.Data.OleDb; using System.Configuration; //增加记录 int times = 0; private void button1_Click(object sender, EventArgs e) { int CountRecord = 0; times = times + 1; OleDbConnection Con = new OleDbConnection(); //从项目的app.config文件中,调用连接字符串,这需要System.Configuration命名空间 //如果是WEB程序,也可以从WEB.Config文件中,调用连接字符串 //在WinForm程序中,要实现这样的功能,除了在FORM中增加System.Configuration命名空间外, //在项目中还要添加引用System.Configuration,否则只能调用AppSetting字符串。 //在app.config文件中,ZhaiKouCheConnectionString的值如下:
//<connectionStrings> // <add name="ZhaiKouCheConnectionString" // connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ZhaiKouChe.mdb;Persist Security Info=True" // providerName="System.Data.OleDb" /> // </connectionStrings>Con.ConnectionString = ConfigurationManager.ConnectionStrings["ZhaiKouCheConnectionString"].ConnectionString;
OleDbCommand Cmd = new OleDbCommand(); Cmd.Connection = Con; string strSql = "insert into t_road(road_name) values('中北路" + times.ToString() + "')"; Cmd.CommandText = strSql; Con.Open(); CountRecord = Cmd.ExecuteNonQuery();//返回数据库中受影响的行数 Con.Close(); this.t_roadTableAdapter.Fill(this.zhaiKouCheDataSet.t_road); //上一条是用来刷新窗口中的一个类似DataGrid数据控件的,以使插入的记录立即在窗口内显 MessageBox.Show("update ReCord " + CountRecord.ToString() + "条!"); //判断是否插入成功,大于0成功 }