以前的博客记录了使用vbs脚本来添加和删除数据表,今天尝试使用c脚本实现同样的功能。假设有一个数据库DB,我们希望在下面新建/删除一个数据表Mytable,这张表有三个字段:
Curindex 这是一个整型变量,是主键,不允许为空,会自动加1;stuno是char变量;,不允许为空;name是char变量,不允许为空。在按钮的点击事件中添加以下c脚本。
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
__object *cn, *rs;
int i,tableexist;
char *connstr="Provider = SQLOLEDB.1;password = sa;user id = sa;Initial Catalog =MyDB;Data Source=ES\\wincc";
char *sql="select * from SYSOBJECTS where xtype='U' AND name='Mytable'";
char *sql1="create table Mytable(CurIndex int identity(1,1) primary key,stuNo char(6) not null,Name char(8) not null)";
cn=__object_create("ADODB.Connection");
rs=__object_create("ADODB.RecordSet");
cn->open(connstr);
if (cn->State == 0)// 为0表示连接数据库不成功
MessageBox(NULL,"连接数据库失败!","警告",MB_OK);
else
{
rs->Open(sql,cn,1,3);
if (rs->RecordCount()>0)
{
MessageBox(NULL,"数据表Mytable存在!","注意",MB_OK);
rs->Close;
}
else
{
rs->Close;
rs->Open(sql1,cn);
rs->Close;
}
}
if(cn->State != 0)
cn->Close;
}
删除按钮的点击事件写入以下c脚本:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
__object *cn, *rs;
int i,tableexist;
char *connstr="Provider = SQLOLEDB.1;password = sa;user id = sa;Initial Catalog =MyDB;Data Source=ES\\wincc";
char *sql="select * from SYSOBJECTS where xtype='U' AND name='Mytable'";
char *sql1="drop table Mytable";
cn=__object_create("ADODB.Connection");
rs=__object_create("ADODB.RecordSet");
cn->open(connstr);
if (cn->State == 0)// 为0表示连接数据库不成功
MessageBox(NULL,"连接数据库失败!","警告",MB_OK);
else
{
rs->Open(sql,cn,1,3);
if (rs->RecordCount()>0)
{
rs->Close;
rs->Open(sql1,cn);
rs->Close;
}
else
{
MessageBox(NULL,"数据表Mytable不存在!","注意",MB_OK);
rs->Close;
}
}
if(cn->State != 0)
cn->Close;
}
下一次练习,将尝试c脚本做一个报表,包括定时将数据写入sql数据表,在wincc页面条件查询sql表显示在空间里面,后台导出查询结果到excel文件,excel文件的排版等等功能。