插入一条新数据,如何返回主键值id,id是自动增长的

时间:2022-03-05 06:01:31
插入一条新数据,如何返回主键值id,id是自动增长的。
具体的代码实现。。。。

22 个解决方案

#1


试一试


strSQL = "INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity"
SQLCommand.CommandText = strSQL
Id = SQLCommand.ExecuteScalar()

#2


参数的返回类型是什么呀?还有我的表名infor

#3


自增类型的id不是真能Integer吗。

INSERT INTO tablename (name) VALUES (@name)换成你自己的插入语句。
SELECT @@Identity是返回刚插入的记录的ID.

#4


string strCommand=" insert infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!

#5


少了into

insert into infor

#6


引用 4 楼 u012366951 的回复:
string strCommand=" insert infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!


sql 编译错误,还是C#编译错误?

#7


错误提示:
c:\inetpub\wwwroot\infor1\WebForm1.aspx.cs(228): 非静态的字段、方法或属性“System.Data.SqlClient.SqlCommand.CommandText”要求对象引用

c:\inetpub\wwwroot\infor1\WebForm1.aspx.cs(229): 找不到类型或命名空间名称“Integer”(是否缺少 using 指令或程序集引用?)

#8


insert into 表(字段)  OUTPUT INSERTED.自增ID values(字段)

#9


你那自增加是指SQLSERVER数据库
top(1)   desc
max(id)

#10


string strCommand=" insert into values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";

#11


引用 4 楼 u012366951 的回复:
string strCommand=" insert  infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!

infor,叼炸天

#12


引用 11 楼 u010349035 的回复:
Quote: 引用 4 楼 u012366951 的回复:

string strCommand=" insert  infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!

infor,叼炸天

基本insert语句都忘了。。。
INSERT INTO 表名称 VALUES (值1, 值2,....)

#13



首先没有实例化SqlCommand

在一个是直接用 int 类型接收值,哪来的Integer类型

#14


引用 4 楼 u012366951 的回复:
string strCommand=" insert infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!


insert into 不是 insert infor。

#15


先说说什么数据库吧,不是所有的数据库都支持复合语句的

#16


1楼代码验证通过 插入一条新数据,如何返回主键值id,id是自动增长的

#17


帮顶 插入一条新数据,如何返回主键值id,id是自动增长的

#18


SQL Server可以这么弄

#19



.................
            SqlCommand com = new SqlCommand();
            com.CommandText = strCommand;
            int Id =(int)com.ExecuteScalar();

#20


引用 1 楼 findcaiyzh 的回复:
试一试


strSQL = "INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity"
SQLCommand.CommandText = strSQL
Id = SQLCommand.ExecuteScalar()


不建议用@@Identity  建议用SCOPE_IDENTITY   http://hi.baidu.com/qxyywy/item/dbcc133fe1914a26b2c0c521  以前上一家公司也出现过类似问题

#21


引用 1 楼 findcaiyzh 的回复:
试一试


strSQL = "INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity"
SQLCommand.CommandText = strSQL
Id = SQLCommand.ExecuteScalar()


但是现在有一个问题,要是批量上传数据怎么办,就是
strSQL = "INSERT INTO tablename (name) VALUES (@name),(@name),(@name),(@name)"

#22


引用 20 楼 qxyywy 的回复:
Quote: 引用 1 楼 findcaiyzh 的回复:

试一试


strSQL = "INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity"
SQLCommand.CommandText = strSQL
Id = SQLCommand.ExecuteScalar()


不建议用@@Identity  建议用SCOPE_IDENTITY   http://hi.baidu.com/qxyywy/item/dbcc133fe1914a26b2c0c521  以前上一家公司也出现过类似问题
多谢提醒!SCOPE_IDENTITY()只返回插入到当前作用域中的值,而@@IDENTITY不受限于当前作用域。

#1


试一试


strSQL = "INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity"
SQLCommand.CommandText = strSQL
Id = SQLCommand.ExecuteScalar()

#2


参数的返回类型是什么呀?还有我的表名infor

#3


自增类型的id不是真能Integer吗。

INSERT INTO tablename (name) VALUES (@name)换成你自己的插入语句。
SELECT @@Identity是返回刚插入的记录的ID.

#4


string strCommand=" insert infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!

#5


少了into

insert into infor

#6


引用 4 楼 u012366951 的回复:
string strCommand=" insert infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!


sql 编译错误,还是C#编译错误?

#7


错误提示:
c:\inetpub\wwwroot\infor1\WebForm1.aspx.cs(228): 非静态的字段、方法或属性“System.Data.SqlClient.SqlCommand.CommandText”要求对象引用

c:\inetpub\wwwroot\infor1\WebForm1.aspx.cs(229): 找不到类型或命名空间名称“Integer”(是否缺少 using 指令或程序集引用?)

#8


insert into 表(字段)  OUTPUT INSERTED.自增ID values(字段)

#9


你那自增加是指SQLSERVER数据库
top(1)   desc
max(id)

#10


string strCommand=" insert into values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";

#11


引用 4 楼 u012366951 的回复:
string strCommand=" insert  infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!

infor,叼炸天

#12


引用 11 楼 u010349035 的回复:
Quote: 引用 4 楼 u012366951 的回复:

string strCommand=" insert  infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!

infor,叼炸天

基本insert语句都忘了。。。
INSERT INTO 表名称 VALUES (值1, 值2,....)

#13



首先没有实例化SqlCommand

在一个是直接用 int 类型接收值,哪来的Integer类型

#14


引用 4 楼 u012366951 的回复:
string strCommand=" insert infor values('"+TextBox2.Text+" ','"+TextBox3.Text+" ','"+TextBox4.Text+" ','"+TextBox5.Text+" ') ;SELECT @@Identity;";
                SqlCommand.CommandText = strCommand;
               Integer Id = SqlCommand.ExecuteScalar();
我这么写编译总出错。帮忙看看错在哪,谢咯!


insert into 不是 insert infor。

#15


先说说什么数据库吧,不是所有的数据库都支持复合语句的

#16


1楼代码验证通过 插入一条新数据,如何返回主键值id,id是自动增长的

#17


帮顶 插入一条新数据,如何返回主键值id,id是自动增长的

#18


SQL Server可以这么弄

#19



.................
            SqlCommand com = new SqlCommand();
            com.CommandText = strCommand;
            int Id =(int)com.ExecuteScalar();

#20


引用 1 楼 findcaiyzh 的回复:
试一试


strSQL = "INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity"
SQLCommand.CommandText = strSQL
Id = SQLCommand.ExecuteScalar()


不建议用@@Identity  建议用SCOPE_IDENTITY   http://hi.baidu.com/qxyywy/item/dbcc133fe1914a26b2c0c521  以前上一家公司也出现过类似问题

#21


引用 1 楼 findcaiyzh 的回复:
试一试


strSQL = "INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity"
SQLCommand.CommandText = strSQL
Id = SQLCommand.ExecuteScalar()


但是现在有一个问题,要是批量上传数据怎么办,就是
strSQL = "INSERT INTO tablename (name) VALUES (@name),(@name),(@name),(@name)"

#22


引用 20 楼 qxyywy 的回复:
Quote: 引用 1 楼 findcaiyzh 的回复:

试一试


strSQL = "INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity"
SQLCommand.CommandText = strSQL
Id = SQLCommand.ExecuteScalar()


不建议用@@Identity  建议用SCOPE_IDENTITY   http://hi.baidu.com/qxyywy/item/dbcc133fe1914a26b2c0c521  以前上一家公司也出现过类似问题
多谢提醒!SCOPE_IDENTITY()只返回插入到当前作用域中的值,而@@IDENTITY不受限于当前作用域。