源码下载地址:http://download.csdn.net/source/1048586 App.config<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/AppData/db.mdb;Persist Security Info=True" providerName="System.Data.OleDb" /> </connectionStrings> </configuration> DataAccess.csusing System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.OleDb; namespace HelloVS2008.AppCode { public class DataAccess { //注意这里需要添加引用System.Configuration,不是仅仅using一下. static string strCon = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); /// <summary> /// 执行查询,返回DataSet /// </summary> /// <param name="sqlStr">sql语句</param> /// <param name="tableName">表名</param> /// <returns></returns> public static DataSet GetDataSet(string sqlStr, string tableName) { OleDbConnection conn = new OleDbConnection(strCon); DataSet ds = new DataSet(); conn.Open(); OleDbDataAdapter da = new OleDbDataAdapter(sqlStr, conn); da.Fill(ds, tableName); conn.Close(); return ds; } /// <summary> /// 执行非查询的sql语句 /// </summary> /// <param name="sqlStr"></param> /// <returns></returns> public static int ExecuteSQL(string sqlStr) { using (OleDbConnection conn = new OleDbConnection(strCon)) { OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = sqlStr; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); return 1; } } } } DataForm.csusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace HelloVS2008 { public partial class DataForm : Form { private DataSet ds; private BindingManagerBase myBind; public DataForm() { InitializeComponent(); } private void DataForm_Load(object sender, EventArgs e) { ds = AppCode.DataAccess.GetDataSet("select * from workerInf", "workerInf"); //为普通控件绑定数据库字段的方法Add("要绑定的属性","作为绑定源的控件","绑定源的属性"); this.txtBind.DataBindings.Add("Text", ds, "workerInf.name"); //绑定普通控件,把标题与一个TextBox里的内容绑定,同步。 this.DataBindings.Add("Text", txtText, "Text"); //通过Form的BindingContext取得BindingManagerBase myBind = this.BindingContext[ds, "workerInf"]; } private void btnNext_Click(object sender, EventArgs e) { if (myBind.Position == myBind.Count - 1) MessageBox.Show("已经到了最后一条记录!", "信息提示!", MessageBoxButtons.OK, MessageBoxIcon.Information); else myBind.Position += 1; } private void btnPrep_Click(object sender, EventArgs e) { if (myBind.Position == 0) MessageBox.Show("已经到了第一条记录!", "信息提示!", MessageBoxButtons.OK, MessageBoxIcon.Information); else myBind.Position -= 1; } private void btnFirst_Click(object sender, EventArgs e) { myBind.Position = 0; } private void btnLast_Click(object sender, EventArgs e) { myBind.Position = myBind.Count - 1; } private void btnExecuteSql_Click(object sender, EventArgs e) { //要点是:执行数据库更新,同时更新内存中数据。内存中数据更新需要构造DataRow //InsertRecord(); //DeleteRecord(); UpdateRecord(); } protected void InsertRecord() { try { //根据输入控件的值构造sql语句 string strInsert = "insert into workerInf(name,sex) values('gv','男')"; //执行数据库操作 AppCode.DataAccess.ExecuteSQL(strInsert); //更新内存数据 ds.Tables["workerInf"].Rows[myBind.Position].BeginEdit(); //构造DataRow DataRow dr = ds.Tables["workerInf"].NewRow(); dr["name"] = "hello"; dr["sex"] = "男"; ds.Tables["workerInf"].Rows.Add(dr); ds.Tables["workerInf"].Rows[myBind.Position].EndEdit(); ds.Tables["workerInf"].AcceptChanges(); } catch (Exception ed) { MessageBox.Show("增加数据记录发生 " + ed.ToString(), "错误!"); } } protected void DeleteRecord() { try { //删除条件,从BindingManagerBase中取 //MessageBox.Show(ds.Tables["workerInf"].Rows[myBind.Position]["name"].ToString()); //执行数据库操作 string strInsert = "delete from workerInf where name='gv'"; AppCode.DataAccess.ExecuteSQL(strInsert); //更新内在中数据 ds.Tables["workerInf"].Rows[myBind.Position].BeginEdit(); ds.Tables["workerInf"].Rows[myBind.Position].Delete(); ds.Tables["workerInf"].Rows[myBind.Position].EndEdit(); ds.Tables["workerInf"].AcceptChanges(); } catch (Exception ed) { MessageBox.Show("删除数据记录发生 " + ed.ToString(), "错误!"); } } protected void UpdateRecord() { try { //执行数据库操作 //string strInsert = "update workerInf set name='gv1',sex='女' where name='tree'"; //AppCode.DataAccess.ExecuteSQL(strInsert); //更新内在中数据 ds.Tables["workerInf"].Rows[myBind.Position].BeginEdit(); DataRow dr = ds.Tables["workerInf"].Rows[myBind.Position]; dr["name"] = "gv1"; dr["sex"] = "女"; ds.Tables["workerInf"].Rows[myBind.Position].EndEdit(); ds.Tables["workerInf"].AcceptChanges(); } catch (Exception ed) { MessageBox.Show("更新数据记录发生 " + ed.ToString(), "错误!"); } } } }