10 个解决方案
#1
如果不是多用户同时用的话,最大得编号就是了
#2
老大,就是多用户的,有办法么?
或者还是在设计数据库的时候能通过什么关联来设置?
或者还是在设计数据库的时候能通过什么关联来设置?
#3
--參考下列:
create table student(id int identity(1,1) not nll,name varchar(10) not null)
go
--以下在bcb中
void __fastcall Button1Click(TObject *Sender)
{
int cur_id; //取得編號
Query1->Close();
Query1->SQL->Text="insert into student(name) select '張華'";
Query1->Prepae();
Query1->ExecSQL();
//获得该记录的自编号
Query1->Close();
Query1->SQL->Text="select SCOPE_IDENTITY()";
Query1->Prepae();
Query1->Open();
cur_id=Query1->Fields->Fields[0]->AsInteger;
ShowMessage("剛才新增學生的ID為:"+AnsiString(cur_id));
}
create table student(id int identity(1,1) not nll,name varchar(10) not null)
go
--以下在bcb中
void __fastcall Button1Click(TObject *Sender)
{
int cur_id; //取得編號
Query1->Close();
Query1->SQL->Text="insert into student(name) select '張華'";
Query1->Prepae();
Query1->ExecSQL();
//获得该记录的自编号
Query1->Close();
Query1->SQL->Text="select SCOPE_IDENTITY()";
Query1->Prepae();
Query1->Open();
cur_id=Query1->Fields->Fields[0]->AsInteger;
ShowMessage("剛才新增學生的ID為:"+AnsiString(cur_id));
}
#4
如果有多台客户机同时输入的话,会出问题么?
#5
多用户的写入操作:
每次只允许一个用户对数据库进行写操作,在添加记录之前,先对数据库上锁,使其他用户不能写入。等你添加完成后,取出编号,再解锁。使其他用户可对数据库操作。这样就不会出现混乱,可以取到编号。
每次只允许一个用户对数据库进行写操作,在添加记录之前,先对数据库上锁,使其他用户不能写入。等你添加完成后,取出编号,再解锁。使其他用户可对数据库操作。这样就不会出现混乱,可以取到编号。
#6
多用户操作数据库是可以同时读数据库内容,但是每次只能有一个用户对数据库进行写操作,以免出现问题。解决的办法就是每次有用户操作之前,先对数据库上锁,等此用户写完后,再解锁。可以读上锁的数据库数据,但是不能写上锁的数据库数据。
#7
应该……
用ADO。
用类似:
ADOQryTmp->FieldByName("ABC")->AsString = "AAA"
……
等语句初始完值后。
来个
ADOQryTmp->Post();
然后再回取
ADOQryTmp->FieldByName("ID")->AsInteger//ID为自动编号字段。
就应该可以得到ID的值。
注意的是中间不能断开和关闭ADO。
以上是本人想法,没有测试。
用ADO。
用类似:
ADOQryTmp->FieldByName("ABC")->AsString = "AAA"
……
等语句初始完值后。
来个
ADOQryTmp->Post();
然后再回取
ADOQryTmp->FieldByName("ID")->AsInteger//ID为自动编号字段。
就应该可以得到ID的值。
注意的是中间不能断开和关闭ADO。
以上是本人想法,没有测试。
#8
直接返回@@identity不就完事了.
#9
@@identity?
是怎么回事情?
是怎么回事情?
#10
@@identity?
是怎么回事情?
能具体点么?
是怎么回事情?
能具体点么?
#1
如果不是多用户同时用的话,最大得编号就是了
#2
老大,就是多用户的,有办法么?
或者还是在设计数据库的时候能通过什么关联来设置?
或者还是在设计数据库的时候能通过什么关联来设置?
#3
--參考下列:
create table student(id int identity(1,1) not nll,name varchar(10) not null)
go
--以下在bcb中
void __fastcall Button1Click(TObject *Sender)
{
int cur_id; //取得編號
Query1->Close();
Query1->SQL->Text="insert into student(name) select '張華'";
Query1->Prepae();
Query1->ExecSQL();
//获得该记录的自编号
Query1->Close();
Query1->SQL->Text="select SCOPE_IDENTITY()";
Query1->Prepae();
Query1->Open();
cur_id=Query1->Fields->Fields[0]->AsInteger;
ShowMessage("剛才新增學生的ID為:"+AnsiString(cur_id));
}
create table student(id int identity(1,1) not nll,name varchar(10) not null)
go
--以下在bcb中
void __fastcall Button1Click(TObject *Sender)
{
int cur_id; //取得編號
Query1->Close();
Query1->SQL->Text="insert into student(name) select '張華'";
Query1->Prepae();
Query1->ExecSQL();
//获得该记录的自编号
Query1->Close();
Query1->SQL->Text="select SCOPE_IDENTITY()";
Query1->Prepae();
Query1->Open();
cur_id=Query1->Fields->Fields[0]->AsInteger;
ShowMessage("剛才新增學生的ID為:"+AnsiString(cur_id));
}
#4
如果有多台客户机同时输入的话,会出问题么?
#5
多用户的写入操作:
每次只允许一个用户对数据库进行写操作,在添加记录之前,先对数据库上锁,使其他用户不能写入。等你添加完成后,取出编号,再解锁。使其他用户可对数据库操作。这样就不会出现混乱,可以取到编号。
每次只允许一个用户对数据库进行写操作,在添加记录之前,先对数据库上锁,使其他用户不能写入。等你添加完成后,取出编号,再解锁。使其他用户可对数据库操作。这样就不会出现混乱,可以取到编号。
#6
多用户操作数据库是可以同时读数据库内容,但是每次只能有一个用户对数据库进行写操作,以免出现问题。解决的办法就是每次有用户操作之前,先对数据库上锁,等此用户写完后,再解锁。可以读上锁的数据库数据,但是不能写上锁的数据库数据。
#7
应该……
用ADO。
用类似:
ADOQryTmp->FieldByName("ABC")->AsString = "AAA"
……
等语句初始完值后。
来个
ADOQryTmp->Post();
然后再回取
ADOQryTmp->FieldByName("ID")->AsInteger//ID为自动编号字段。
就应该可以得到ID的值。
注意的是中间不能断开和关闭ADO。
以上是本人想法,没有测试。
用ADO。
用类似:
ADOQryTmp->FieldByName("ABC")->AsString = "AAA"
……
等语句初始完值后。
来个
ADOQryTmp->Post();
然后再回取
ADOQryTmp->FieldByName("ID")->AsInteger//ID为自动编号字段。
就应该可以得到ID的值。
注意的是中间不能断开和关闭ADO。
以上是本人想法,没有测试。
#8
直接返回@@identity不就完事了.
#9
@@identity?
是怎么回事情?
是怎么回事情?
#10
@@identity?
是怎么回事情?
能具体点么?
是怎么回事情?
能具体点么?