CREATE PROCEDURE dbo.InsertUser
@sName varchar(50),
@sPassWord varchar(20),
@Count int
AS
select @Count=Max(Id) from Users
begin
insert into Member (Id,Name,PassWord)
values
(@Count+1,@sName,@sPassWord)
end
GO
解决方案 »
- 动态添加的用户控件怎么给里面的控件验证
- 关于XML和C# 求解!!!
- 我想做这么小工具,请教一下都需要学习什么知识
- 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。本用的是udpclient进行绑定的。
- 局部类 如何触发事件呢。。
- TabControl中page顺序问题~C#
- 静态方法与非静态方法的内存分配与性能
- GridView焦点行问题
- GPS开发大讨论,主要关于网络和多线程
- 求MICROSOFT.VISUAL.STUDIO.NET.ENTERPRISE.ARCHITECT.EDITION-ISO--EN,英文版注册码!谢谢!!
- 如何在一个事件里调用执行一个树的Expand和SelectedIndexChange事件
- 奇怪的问题
如果自己写就麻烦了 你要考虑到并发操作 还有删除以后是否会出现相同的ID
这个是最简单的解决方法
当然也可参考上面的
CREATE PROCEDURE dbo.InsertUser
@sName varchar(50),
@sPassWord varchar(20),
@Count int
AS
select @Count=Max(Id) from Users
begin
insert into Member (Id,Name,PassWord)
values
(@Count+1,@sName,@sPassWord)
end
GO
===============================================
这个显然是有问题的。如果有一些数据以后删除一条非末尾记录,然后再添加就会出现重复ID应该Select Max(Id)+1作为ID )
declare @count int
select @max_id = max(id)from users
select @count= count(*)from users
if (@count=0)
@max_id=1
else
@max_id= @max_id+1
select questiontypeid,testNum,IDENTITY(int, 1,1) AS id1 into #temp from papersetting
select * from #temp
drop table #temp
你可以把你的实现写在stored procedure or your sql script.
string cmdtxt1="SELECT MAX(号码) FROM 用户信息";
SqlCommand OLcmd1=new SqlCommand(cmdtxt1,OLconn);
SqlDataReader OLread;
OLread1=OLcmd1.ExecuteReader();
while(OLread.Read())
{
int maxnum=OLread.GetInt32(0)+1;
}
OLread1.Close();然后再用maxnum作为插入纪录的号码的值。
INSERT INTO 用户信息(号码,昵称) VALUES (maxnum,'突突')不知是否可行?
Sql Server不能同时有两个自增字段的。而如果实际要求要实现两个自增字段呢?
你只要抓max(i)然後再+1就可以了
OLconn.Open();
string cmdtxt1="SELECT MAX(号码) FROM 用户信息";
SqlCommand OLcmd1=new SqlCommand(cmdtxt1,OLconn);
SqlDataReader OLread;
OLread1=OLcmd1.ExecuteReader();
while(OLread.Read())
{
int maxnum=OLread.GetInt32(0)+1;
}
OLread1.Close();这样取成功的得了maxnum+1,但是怎样在while循环外面用 maxnum 的值?
因为要用maxnum+1作为新用户的识别号码字段的值,构造新增用户的SQL语句
INSERT INTO 用户信息(号码,昵称) VALUES (maxnum,'QQ')
上面这样直接引用不行,maxnum属于while循环。
-----------------------------
ID int
Name varchar(50)
----------------------------- Then the procedure of inserting data:
-----------------------------------------
CREATE PROCEDURE proc_insert @name varchar(50)
as declare @id int
select @id=isnull(max(ID),0)+1 from Tab1 insert Tab1(ID,Name) values(@id,@name)
-------------------------------------------
OK, Just Done !
在哪里设昵?不好意思是一个小的问题
int xn=1;
while(OLread.Read())
{
int maxnum=OLread.GetInt32(0)+1;
xn=maxnum;
}
不就可以了?哈,低级错误哦。