• <转载>OleDb操作Access数据库:新增记录时获取自动编号的主键值


    //打开数据库的一般方法
    OleDbConnection cnn = new OleDbConnection(sCnn);
    cnn.Open();
    DataTable table = new DataTable();
    try
    {
        OleDbCommand cmd = new OleDbCommand(sCommand, cnn);
        cmd.CommandType = cmdType;
        //构建DataAdapter
        OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
        //填充数据
        table = new DataTable(sDataTableName);
        adapter.Fill(table);
        cnn.Close();
        table.PrimaryKey = new DataColumn[1] { table.Columns[0] };
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
        builder.QuotePrefix = "[";
        builder.QuoteSuffix = "]";
        adapter.InsertCommand = builder.GetInsertCommand();
        adapter.DeleteCommand = builder.GetDeleteCommand();
        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated);
    }
    catch
    {
    }
      
      
    //========================
    //OleDbRowUpdatedEventHandler实例
    protected void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs e)
    {
        if ((e.Status == UpdateStatus.Continue) && e.StatementType == StatementType.Insert)
        {
            int newID = 0;
            OleDbCommand cmdGetId = new OleDbCommand("SELECT @@IDENTITY", e.Command.Connection);
            newID = (int)cmdGetId.ExecuteScalar();
            e.Row["id"] = newID;
            if (newID == 0)
            {
                MessageBox.Show("获取ID值错误!");
            }
        }
    }
      
    //========================
    //修改row的数据
        System.Data.DataTable tblChange = table.GetChanges();
        affectRowCount = adapter.Update(tblChange);
        if (mode == modeNew)
        {
            row["id"] = tblChange.Rows[0]["id"];
        }
        table.AcceptChanges();
  • 相关阅读:
    分解让复杂问题简单化:字符串的排列
    分解让复杂问题简单化:二叉搜索树与双向链表
    分解让复杂问题简单化:复杂链表的复制
    举例让抽象问题具体化:二叉树中和为某一值的路径
    举例让抽象问题具体化:二叉搜索树的后序遍历序列
    Java Collection Framework
    Spring Boot 项目部署到本地Tomcat,出现访问路径问题
    happens-before规则
    NoClassDefFoundError
    《Java编程思想》笔记 第十六章 数组
  • 原文地址:https://www.cnblogs.com/xiexiaokui/p/2837949.html
Copyright © 2020-2023  润新知