随着软件开发技术的飞速发展,不管是企业级应用还是数据分析,几乎都会存在多种程序间的访问、交互需求。解决多种程序间的访问、交互可以采用中间件技术。这里介绍借助中间件来实现C语言与微软的SQL数据库之间的无缝对接。
步骤一,该项目开发环境为C语言+Windows系统,也就是MFC+WIN32的环境,此外还需要安装MSSQL Server 2008数据库。
步骤二,配置MSSQL Server 2008数据库,确定用户名、密码以及要访问的数据库名。
步骤三,在C程序中,首先设置ADO连接参数,连接到MSSQL Server 2008数据库。
最后,编写C程序,实现数据读、写操作,下面是简单的代码:
“`c
// 声明一个adodb::_ConnectionPtr对象
_ConnectionPtr connectionptr;
// 使用connectionptr来导入MSSQL数据库
hr = connectionptr.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
{
return false;
}
// 连接参数
_bstr_t strConnect = “Driver={SQL Server};Server=IP;uid=user;pwd=password;Database=databasename;”;
hr = connectionptr->Open(strConnect, “”, “”, adModeUnknown);
if FAILED(hr)
{
return false;
}
// 增
_bstr_t strSQL = “INSERT INTO TableName(name, sex) VALUES(‘LiLei’, ‘female’)”;
connectionptr->Execute(strSQL, NULL, adExecuteNoRecords);
// 删
strSQL = “DELETE FROM TableName WHERE name=’LiLei’”;
connectionptr->Execute(strSQL, NULL, adExecuteNoRecords);
// 改
strSQL = “UPDATE TableName SET name=’HanMeiMei’ WHERE name=’LiLei’ “;
connectionptr->Execute(strSQL, NULL, adExecuteNoRecords);
// 查
strSQL = “SELECT * from TableName”;
_RecordsetPtr recordset;
hr = recordset.CreateInstance(__uuidof(Recordset));
if FAILED(hr)
{
return false;
}
recordset = connectionptr->Execute(strSQL, NULL, adCmdText);
if (recordset->State != adStateOpen)
{
return false;
}
while(!recordset->adoEOF)
{
_variant_t value = recordset->GetCollect(“name”);
printf(“name: %s\n”, value.bstrVal);
recordset->MoveNext();
}
recordset->Close();
connectionptr->Close();
以上是借助中间件实现C与MSSQL的无缝对接的过程,借助中间件技术,能够大大简化开发过程,节省开发时间。