CVI数据库中数据的更新
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*-----------------------------数据库中数据的更新------------------------------*/
1.利用SQL语句update
int main()
{
ConnectHandle=DBConnect ("DSN=CVILocal;UID=sa;PWD=123");
ActivateHandle = DBActivateSQL (ConnectHandle, "update 测试表set 测试变量值=3.0 where 测试变量ID=1203 ");
resCode = DBDeactivateSQL (ActivateHandle);
DBDisconnect (ConnectHandle);
return 0;
}
2.DBPutColFloat等函数直接更新
int main()
{
ConnectHandle=DBConnect ("DSN=CVILocal;UID=sa;PWD=123");
ActivateHandle = DBActivateSQL (ConnectHandle, "select * from 测试表where 测试变量ID=1203");
resCode = DBPutColFloat (ActivateHandle, 3, 23.2);
resCode = DBPutRecord (ActivateHandle);
resCode = DBDeactivateSQL (ActivateHandle);
DBDisconnect (ConnectHandle);
return 0;
}
3.用非SQL变量的形式更新数据库中的值
int main()
{
double serNum=13.0;
long serNumLen;
ConnectHandle=DBConnect ("DSN=CVILocal;UID=sa;PWD=123");
ActivateHandle = DBActivateSQL (ConnectHandle, "SELECT * FROM 参数表WHERE 参数ID=2");
resCode = DBBindColDouble (ActivateHandle, 3, &serNum, &serNumLen);
resCode = DBPutRecord (ActivateHandle);
resCode = DBDeactivateSQL (ActivateHandle);
DBDisconnect (ConnectHandle);
return 0;
}
4.DBPutRecord更新
/*-------DBPutRecord 和DBUpdateBatch同时使用才能完成数据更新,DBPutRecord只能完成一个
记录的更新,当在一个循环中调用DBPutRecord时,仅仅是把同一个记录更新了n次------------*/
int main()
{
int i=0;
double serNum=4.0;
long serNumLen;
ConnectHandle=DBConnect ("DSN=CVILocal;UID=sa;PWD=123");
resCode = DBSetAttributeDefault (ConnectHandle, ATTR_DB_LOCK_TYPE,DB_LOCK_BATCH_OPTIMISTIC); ActivateHandle = DBActivateSQL (ConnectHandle, "SELECT * FROM 测试表");
resCode = DBBindColDouble (ActivateHandle, 3, &serNum, &serNumLen);
for (i = 0; i < 10; i++)
{
serNum++;
resCode = DBCreateRecord (ActivateHandle); //若没有这一句,数据库中仅仅第一行的数据被更新为13
resCode = DBPutRecord (ActivateHandle);
}
resCode = DBUpdateBatch (ActivateHandle, DB_AFFECT_ALL);//若没有这一句,数据库中的数据无任何变动
resCode = DBDeactivateSQL (ActivateHandle);
resCode = DBSetAttributeDefault (ConnectHandle, ATTR_DB_LOCK_TYPE,DB_LOCK_OPTIMISTIC);
resCode = DBDisconnect (ConnectHandle);
return 0;
}
5.DBFetchNext、BPutColDouble和DBPutRecord实现数据库数据的批量更新
int main()
{
double a[5]={11.1,22.2,33.3,44.4,55.5};
int i=0;
ConnectHandle=DBConnect ("DSN=CVILocal;UID=sa;PWD=123");
ActivateHandle = DBActivateSQL (ConnectHandle, "select * from 测试表where 测试变量ID>1230 and 测试变量ID<1236");
while(DBFetchNext(ActivateHandle)==0)
{
resCode = DBPutColDouble (ActivateHandle, 3, a[i]);
resCode = DBPutRecord (ActivateHandle);
i++;
}
resCode = DBDeactivateSQL (ActivateHandle);
DBDisconnect (ConnectHandle);
return 0;
}