面朝大海,春暖华开

focus on scientific computue, 3dgis, spatial database
专注于科学计算、GIS空间分析

 

<转载>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();

 

posted on   风过 无痕  阅读(504)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2006-12-28 MapXtreme2005开发的经典问题

导航

统计

向日葵支付宝收钱码
点击右上角即可分享
微信分享提示