当前位置: 代码迷 >> Sql Server >> 更新有关问题
  详细解决方案

更新有关问题

热度:94   发布时间:2016-04-27 15:08:02.0
更新问题
datagroup表中有testid,engineid,guidaoid,pointid,testbay,testsupervisor,testtype,和groupid。
其中groupid=testid+engineid+guidaoid+pointid。再数据库中已经定义好。
在分析查看器中执行
insert into datagroup(testid,engineid,guidaoid,pointid,testbay,testsupervisor,testtype) values ('2','12','1','ZHSH','2','2','2')成功。

在vc中 strsql="insert into datagroup(testid,engineid,guidaoid,pointid,testbay,testsupervisor,testtype) values ('21','13','1','ZHSH','2','2','2')";
  m_pCommand.CreateInstance("ADODB.Command");
  m_pCommand->ActiveConnection =theApp.m_pConnection;  
  m_pCommand->CommandText=_bstr_t(strsql);
  m_pCommand->Execute(NULL, NULL,adCmdText); 
  m_pCommand.Release();
程序execute不成功。
而另外一个表 userinfo,由于没有函数关系,使用同样的insert into语句,使用execute就能成功?为什么?谁能帮我解决以下。


------解决方案--------------------


--如果你的字段都是字符型,没有问题,测试如下:

create table #t
(
testid varchar(100),
engineid varchar(100),
guidaoid varchar(100),
pointid varchar(100),
testbay varchar(100),
testsupervisor varchar(100),
testtype varchar(100),
groupid as (testid+engineid+guidaoid+pointid)
)

insert into #t(testid,engineid,guidaoid,pointid,testbay,testsupervisor,testtype) 
values ('2','12','1','ZHSH','2','2','2') 

select * from #t

drop table #t
 
------解决方案--------------------
ADO更新必须有关键字。


------解决方案--------------------
微软最新的ADO.Net更新后台时,也必须有关键字字段,否则提示错误。
------解决方案--------------------
没有关键字,系统更新数据库时,无法唯一确定数据行。
------解决方案--------------------
表需要有关键字。

如果无法唯一确定某一行数据,前台程序无法更新数据。

如果你实在找不到唯一确定一行数据的一个或多个字段,可以设置一个自动编号字段ID,作关键字。
  相关解决方案