码迷,mamicode.com
首页 > 数据库 > 详细

获取mssqlserver与access数据库插入的当前行的id

时间:2014-12-08 10:25:48      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   on   数据   div   

//mssqlserver
 public static int GetInsertId(string sql)
    {
        try
        {
            SqlCommand cmd = new SqlCommand();
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                PrepareCommand(cmd, conn, sql, null);
                cmd.ExecuteNonQuery();
                PrepareCommand(cmd, conn, "Select @@Identity", null);
                int val = Convert.ToInt32(cmd.ExecuteScalar());
                return val;
            }
        }
        catch (Exception err)
        {
            throw err;
        }

    }

private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, string CmdText, SqlTransaction trans)
    {
        try
        {
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            cmd.Connection = conn;
            cmd.CommandText = CmdText;
            if (trans != null)
            {
                cmd.Transaction = trans;
            }
            cmd.CommandType = CommandType.Text;
        }
        catch (Exception err)
        {
            throw err;
        }
    }

//access
public static int GetInsertId(string sql)
    {
        try
        {
            OleDbCommand cmd = new OleDbCommand();
            using (OleDbConnection conn = new OleDbConnection(ConnectionString))
            {
                PrepareCommand(cmd, conn, sql, null);
                cmd.ExecuteNonQuery();
                PrepareCommand(cmd, conn, "Select @@Identity", null);
                int val =Convert.ToInt32( cmd.ExecuteScalar());
                return val;
            }
        }
        catch (Exception err)
        {
            throw err;
        }
    
    }

public static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, string CmdText, OleDbTransaction trans)
    {
        try
        {
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            cmd.Connection = conn;
            cmd.CommandText = CmdText;
            if (trans != null)
            {
                cmd.Transaction = trans;
            }
            cmd.CommandType = CommandType.Text;
        }
        catch (Exception err)
        {
            throw err;
        }
    }

//还有一种可以用通过插入后查询当前表的最大id的方法获取,但是如果数据并发量大可能回出现问题

获取mssqlserver与access数据库插入的当前行的id

标签:style   blog   io   ar   color   sp   on   数据   div   

原文地址:http://www.cnblogs.com/jasonzeng/p/4150382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!