怎么取出刚插入的主键newid()

时间:2022-09-19 13:46:44
我定了主键,默认值是newid()的,怎么才能在C#程序中刚插入一列,取出这一列的newid()呢?

12 个解决方案

#1


没人啊?

#2


将这个newid()付给一个变量,根据变量来查。

#3


使用存储过程,要不在访问一次

#4


select SCOPE_IDENTITY() as returnid

#5


楼主说的应该是Guid类型的关键字,这个字段不像自增类型的整数一样可以通过类似@@IDENTITY的方式来取,Guid没有类型的方式。要取这个值,只能在插入以后再取一次。

不过对于这个类型,一般来说,可以在在保存以前使用Guid.NewGuid()来先生成一个Guid类型的值,然后把这个值为做插入的参数传到数据库里,而很少使用默认的NewID在数据库端生成。

#6


存储过程 
@@IDENTITY

#7


sign

#8


存储过程这样写:
create proc UP_brand_add
@A0 varchar(20),
@A1 varchar(15),
@id int output
as 
insert into yyyManager values(@A0,@A1)
set @id= @@identity
return @id

程序中:
这是个很完整的写法。楼主可以取其中所需部分。。。
       
    
SqlParameter[] paras=new SqlParameter[3];
    paras[0]=new SqlParameter("@A0",SqlDbType.VarChar,20);
    paras[0].Value=你要赋的值;
    paras[1]=new SqlParameter("@A1",SqlDbType.VarChar,15);
    paras[1].Value=你要赋的值;
    paras[2]=new SqlParameter("@id",SqlDbType.Int);
    paras[2].Direction=ParameterDirection.Output;

    int id=db.ExecoutID("UP_brand_add",paras);


public string ExecoutID(string cmdtext,SqlParameter[] paras)
        {                
            if(conn.State!=ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd=new SqlCommand();
            cmd.Connection=conn;
            cmd.CommandText=cmdtext;
            cmd.CommandType=CommandType.StoredProcedure;
            string  newid=string.Empty;            
            if(paras!=null && paras.Length>0)
            {
                for(int i=0 ; i<paras.Length;i++)
                {
                    cmd.Parameters.Add(paras[i]);
                    
                }
            }
            try
            {            
                cmd.ExecuteNonQuery();
                if(paras!=null && paras.Length>0)
                {
                    for(int i=0 ; i<paras.Length;i++)
                    {
                        if(paras[i].Direction==ParameterDirection.Output)
                        {
                            newid=Convert.ToString(paras[i].Value);
                        }
                    
                    }
                }
                conn.Close();
                
                return newid;

            }
            catch(System.Data.SqlClient.SqlException E)
            {                    
                conn.Close();
                throw new Exception(E.Message);
            }

        }

#9


select id from inserted tablename

#10


select @@Identity   SQL写这个函数就好了

#11


/// <summary>
        /// 插入一條數據并返回它相應的值
        /// </summary>
        /// <param name="tempStrSQL">SQL语句</param>
        /// <returns></returns>
        public int UpdateData(string tempStrSQL)
        {
            DataTable dt = new DataTable();
            int intNum;
            this.myConnection = new SqlConnection(connectionString);
            
            myConnection.Open();
            SqlCommand tempSqlCommand = new SqlCommand(tempStrSQL, this.myConnection);
            tempSqlCommand.ExecuteNonQuery();
            SqlDataAdapter da = new SqlDataAdapter("select @@Identity", myConnection);
            da.Fill(dt);
            intNum = Convert.ToInt32(dt.Rows[0][0].ToString());
            myConnection.Close();
            return intNum;                      //
        }

#12


/// <summary>
        /// 插入一條數據并返回它相應的值
        /// </summary>
        /// <param name="tempStrSQL">SQL语句</param>
        /// <returns></returns>
        public int UpdateData(string tempStrSQL)
        {
            DataTable dt = new DataTable();
            int intNum;
            this.myConnection = new SqlConnection(connectionString);
            
            myConnection.Open();
            SqlCommand tempSqlCommand = new SqlCommand(tempStrSQL, this.myConnection);
            tempSqlCommand.ExecuteNonQuery();
            SqlDataAdapter da = new SqlDataAdapter("select @@Identity", myConnection);
            da.Fill(dt);
            intNum = Convert.ToInt32(dt.Rows[0][0].ToString());
            myConnection.Close();
            return intNum;                      //
        }

#1


没人啊?

#2


将这个newid()付给一个变量,根据变量来查。

#3


使用存储过程,要不在访问一次

#4


select SCOPE_IDENTITY() as returnid

#5


楼主说的应该是Guid类型的关键字,这个字段不像自增类型的整数一样可以通过类似@@IDENTITY的方式来取,Guid没有类型的方式。要取这个值,只能在插入以后再取一次。

不过对于这个类型,一般来说,可以在在保存以前使用Guid.NewGuid()来先生成一个Guid类型的值,然后把这个值为做插入的参数传到数据库里,而很少使用默认的NewID在数据库端生成。

#6


存储过程 
@@IDENTITY

#7


sign

#8


存储过程这样写:
create proc UP_brand_add
@A0 varchar(20),
@A1 varchar(15),
@id int output
as 
insert into yyyManager values(@A0,@A1)
set @id= @@identity
return @id

程序中:
这是个很完整的写法。楼主可以取其中所需部分。。。
       
    
SqlParameter[] paras=new SqlParameter[3];
    paras[0]=new SqlParameter("@A0",SqlDbType.VarChar,20);
    paras[0].Value=你要赋的值;
    paras[1]=new SqlParameter("@A1",SqlDbType.VarChar,15);
    paras[1].Value=你要赋的值;
    paras[2]=new SqlParameter("@id",SqlDbType.Int);
    paras[2].Direction=ParameterDirection.Output;

    int id=db.ExecoutID("UP_brand_add",paras);


public string ExecoutID(string cmdtext,SqlParameter[] paras)
        {                
            if(conn.State!=ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd=new SqlCommand();
            cmd.Connection=conn;
            cmd.CommandText=cmdtext;
            cmd.CommandType=CommandType.StoredProcedure;
            string  newid=string.Empty;            
            if(paras!=null && paras.Length>0)
            {
                for(int i=0 ; i<paras.Length;i++)
                {
                    cmd.Parameters.Add(paras[i]);
                    
                }
            }
            try
            {            
                cmd.ExecuteNonQuery();
                if(paras!=null && paras.Length>0)
                {
                    for(int i=0 ; i<paras.Length;i++)
                    {
                        if(paras[i].Direction==ParameterDirection.Output)
                        {
                            newid=Convert.ToString(paras[i].Value);
                        }
                    
                    }
                }
                conn.Close();
                
                return newid;

            }
            catch(System.Data.SqlClient.SqlException E)
            {                    
                conn.Close();
                throw new Exception(E.Message);
            }

        }

#9


select id from inserted tablename

#10


select @@Identity   SQL写这个函数就好了

#11


/// <summary>
        /// 插入一條數據并返回它相應的值
        /// </summary>
        /// <param name="tempStrSQL">SQL语句</param>
        /// <returns></returns>
        public int UpdateData(string tempStrSQL)
        {
            DataTable dt = new DataTable();
            int intNum;
            this.myConnection = new SqlConnection(connectionString);
            
            myConnection.Open();
            SqlCommand tempSqlCommand = new SqlCommand(tempStrSQL, this.myConnection);
            tempSqlCommand.ExecuteNonQuery();
            SqlDataAdapter da = new SqlDataAdapter("select @@Identity", myConnection);
            da.Fill(dt);
            intNum = Convert.ToInt32(dt.Rows[0][0].ToString());
            myConnection.Close();
            return intNum;                      //
        }

#12


/// <summary>
        /// 插入一條數據并返回它相應的值
        /// </summary>
        /// <param name="tempStrSQL">SQL语句</param>
        /// <returns></returns>
        public int UpdateData(string tempStrSQL)
        {
            DataTable dt = new DataTable();
            int intNum;
            this.myConnection = new SqlConnection(connectionString);
            
            myConnection.Open();
            SqlCommand tempSqlCommand = new SqlCommand(tempStrSQL, this.myConnection);
            tempSqlCommand.ExecuteNonQuery();
            SqlDataAdapter da = new SqlDataAdapter("select @@Identity", myConnection);
            da.Fill(dt);
            intNum = Convert.ToInt32(dt.Rows[0][0].ToString());
            myConnection.Close();
            return intNum;                      //
        }