c++利用SqlApi访问SqlServer数据库(存储过程篇)

一、SqlApi介绍

    SqlApi++是一个为访问Sql数据库而编写的库。支持对Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL, PostgreSQL, SQLite, ODBC数据库的访问。他提供简单的访问数据库接口,开发者可以根据实际情况自行对其封装。他拥有完善的文档和编程实例,开发者可以快速入手。

二、命令解析

    1、  连接数据库函数Connect,如下:

1
2
void  Connect(  const  SAString &sDBString ,  const  SAString &sUserID ,  const  SAString &sPassword , 
SAClient_t eSAClient = SA_Client_NotSpecified, saConnectionHandler_t fHandler = NULL);

 参数解析:    

sDBString:要连接的数据库

sUserID:登录用户名

sPassword:登录密码

eSAClient:用于指定连接何种数据库

fHandler:用于指定回调函数

  2  绑定sql命令函数setCommandText,如下:

1
2
void  setCommandText(  const  SAString &sCmd,SACommandType_t eCmdType
   = SA_CmdUnknown );

 参数解析:

sCmdsql命令

eCmdType:指定命令类型

    3、  准备函数Prepare,如下:

1
virtual  void  Prepare();

   4、执行函数Execute,如下:

1
virtual  void  Execute();

 注意:如果执行存储过程中带输入参数,需要先执行 Prepare()函数。

  5  获取结果函数,如下:

1
bool  FetchNext();

 三、使用方法

    1、  创建数据库的连接对象;

    2、  根据数据库连接对象,创建数据库命令对象,并绑定要执行的语句或者存储过程名;

    3、  执行语句或者存储过程;

    4、  获取返回的值。

四、使用举例

    如本机上有一SqlServer数据库。数据库名为LittleBee,登录用户名sa,密码为tiger。数据库中有一表叫dbo.DM_Runtime,表结构及数据如下:

数据库中有一存储过程sp_GetRunDate,存储过程内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
set  ANSI_NULLS  ON
set  QUOTED_IDENTIFIER  ON
go
-- =============================================
-- Author:  <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE  PROCEDURE  [dbo].[sp_GetRunDate]
AS
BEGIN
  SELECT  TOP  1 import_date  FROM  dbo.DM_Runtime 
END

 使用C++程序调用实例我用的是vs2010如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
#include <stdio.h>  // for printf
#include <SQLAPI.h> // main SQLAPI++ header
#pragma comment(lib,"F:\\lib\\SQLAPI3.7.34\\lib\\sqlapi.lib")
int  _tmain( int  argc, _TCHAR* argv[])
{
  SAConnection con;  // connection object
  SACommand cmd(&con);     // command object
  try
  {
   // connect to database (Oracle in our example)
   con.Connect( "127.0.0.1@LittleBee" "sa" "tiger" , SA_SQLServer_Client);
   cmd.setCommandText( "sp_GetRunDate" );
   //cmd.setCommandText("SELECT TOP 1 import_date FROM dbo.DM_Runtime");
   // Select from our test table
   cmd.Execute();
   // fetch results row by row and print results
   while (cmd.FetchNext())
   {
    printf ( "sp_GetRunDate'%s'\n"
     cmd.Field( "import_date" ).asString());
   }
   // commit changes on success
   con.Commit();
   printf ( "Rows selected!\n" );
  }
  catch (SAException &x)
  {
   // SAConnection::Rollback()
   // can also throw an exception
   // (if a network error for example),
   // we will be ready
   try
   {
    // on error rollback changes
    con.Rollback();
   }
   catch (SAException &)
   {
   }
   // print error message
   printf ( "%s\n" , ( const  char *)x.ErrText());
  }
  return  0;
}

 如果无误的话,将会在命令行看到sp_GetRunDate'20130719'结果。

参考文档如下:

SqlApi的官网:http://www.sqlapi.com/index.html

SqlApi库下载地址:http://www.sqlapi.com/Download/index.html

当然SqlApi也有破解版,为了支持正版,这里就不提供破解版下载链接。亲可以自己在网上收一下。

本实例源码及文档:http://yunpan.cn/QD894ZF4gpZpk 

需要访问密码者,请发我邮箱mokimail126@126.com索取


本文转载自:http://my.oschina.net/u/1426828/blog/187417

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值