none
ACCESS不能用OleDbCommandBuilder批量更新数据么? RRS feed

  • 问题

  • 呵呵,我也搞不懂,我怎么和ACCESS较上劲儿了 !!我用SqlConnection 在sql server中很顺利就完成了,可是在ACCESS中就插不进数据!:(我是想问:它不成功的原因是ACCESS不支持,还是我写的代码有问题?)

     protected void testAccess()

        {

            string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\sexSystem.mdb;";

            OleDbConnection con = new OleDbConnection(connectionString);

            //OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [user]", con);

            OleDbDataAdapter adapter = new OleDbDataAdapter();

            string strSql = "SELECT * FROM [user]";

            OleDbCommand cmd = new OleDbCommand();

            cmd.Connection = con;

            cmd.CommandText = strSql;

            adapter.SelectCommand = cmd;

     

            //OleDbCommandBuilder会自动生成

            //adapter.InsertCommand 和 adapter.UpdateCommand 和  adapter.DeleteCommand

            //所需要的SQL语句

     

            OleDbCommandBuilder cbder = new OleDbCommandBuilder(adapter);

            //adapter.InsertCommand.CommandText = "INSERT INTO [user](userName,userPwd)VALUES('新加成员',123)";

            adapter.InsertCommand = cmd;

            DataSet ds = new DataSet();

            adapter.Fill(ds, "temp");//致此 内存中已经有了一个“temp”的数据表

            //添加数据====================================================================

            //使用DataTable对像的NewRow方法创建新行 即 给内存中temp 表增加新的一行:

            DataRow drow = ds.Tables["temp"].NewRow();

            //给新加的行中两列赋值:

            drow["userName"] = "新加成员";

            drow["userPwd"] = "123";

            //把新加的行加入到表的行集合中:

            ds.Tables["temp"].Rows.Add(drow);

     

            //显示新加入的行:

            int index = ds.Tables["temp"].Rows.Count-1;

            Response.Write("新加入的会员名为:" + ds.Tables["temp"].Rows[index]["userName"] + "<br/>");

            //显示一下temp表即内存中的数据表,此时已经和数据库断开了!

     

            ShowTable(ds.Tables["temp"]);

     

            adapter.Update(ds, "temp");

     

            ////删除指定行

            //ds.Tables["temp"].Rows[index].Delete();

            ////再显示一下删除后的表:

            //Response.Write("以下是执行删除了新加入会员后的:<br/>");

     

            //ShowTable(ds.Tables[0]);

        }


    www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助
    2009年3月9日 21:02

答案

  • http://msdn.microsoft.com/zh-cn/library/system.data.oledb.oledbcommandbuilder.aspx
    孟宪会
    2009年3月10日 0:56
    版主
  •  OleDbCommandBuilder cbder = new OleDbCommandBuilder(adapter);

            //adapter.InsertCommand.CommandText = "INSERT INTO [user](userName,userPwd)VALUES('新加成员',123)";

            adapter.InsertCommand = cmd;//上面用了OleDbCommandBuilder,这里为什么又写一遍,去掉

            DataSet ds = new DataSet();

            adapter.Fill(ds, "temp");//致此 内存中已经有了一个“temp”的数据表


    http://feiyun0112.cnblogs.com/
    2009年3月11日 6:27
    版主

全部回复