尧
尧
Unregistered / Unconfirmed
GUEST, unregistred user!
初学VC,觉得VC访问数据库有点烦,我现在在试着写一个类,封装DBLibrary的一
些方法,主要目的是为了简化VC++访问SQL Server。现在已经差不多完成了第一个版本,
可是觉得还有些地方不好,想请高手指点。
(提供源码:ynzhangyao@sina.com;ynzhangyao@163.com)
简介:
类方法大概包括:
1.连接数据库
2.支持SQL操作
3.支持MS DTC分布式事务
4.支持批拷贝(将表内容按自定义格式导出,将变量值拷入数据库基表)
5.支持错误捕获
以下是此类的一些方法:
int GetColID(char *colName);//取列序号
int InitBCP(char *SourceTableName,//源表名
char *OutFileName,//输出文件名
char *LogFileName,//日志文件名,可以为NULL
const int BCPT//批拷贝类型,为DBOUT时,输出到文件,DBIN时输入到表
);
bool Connect(char *UserName,char *Password,char *SrvName);//创建连接
int SetDataBase(char *DBName);//打开指定数据库
int begin
Trans();//开始事务
int CommitTrans();//结束事务
int RollbackTrans();//回滚事务
int InitTrans();//初始化事务
int WriteLog(bool ErrLog,const char *format,...);
//写日志文件,errlog=true时写入错误日志
void SetAppName(char *AppName="sqlapp");//指定程序名
void SetLogFileName(char *FileName="dblog.log");//设置日志文件
void SetErrLogFile(char *FileName="errlog.log");//设置错误日志文件
void SetOutConsole(bool b=false);//是否输出到控制台
void WriteSQLLog();//写入SQL日志
int Open(const char *format,...);//执行查询,返结果集
int AddSQL(const char *format,...);//向缓冲区加入SQL
int ExecSQL();//执行缓冲区的SQL可返回结果集
int GetValues(char *colName,long *pValue);//取整型值
int GetValues(char *colName,double *pdValue);//取浮点型值
int GetValues(char *colName,char *pValue);//取字符(串)
以下为指针取值:
int pGetValue(char *colName,long *lpresult);//int ,short,long
int pGetValue(char *colName,double *pdresult);//float,double,real
int pGetValue(char *colName,char cpresult);
//char,text,varchar,money,smallmoney
int pGetDate(char *colName,char *strdate);//datetime
//--------------------//
int GetComputeValues(int computeID,int columnID,long *pcValue);
int GetComputeValues(int computeID,int columnID,double *pcValue);
//批拷贝到文件
long BatchCopyToFile(char *TableName, //表名
har *FileName, //文件名
int col[], //表列号集,首列为1
int cols, //表列号数
char *term, //分隔符
int termlen //分隔符长度
int StartRow //开始行号,首行为1
);
/* BatchCopyToFile
成功retrun 拷贝行数;
失败:1.如果已拷贝数大于0 return 已拷贝数
2.如果已拷贝数=0 return 错误代码
*/
int BCPInitTable(char *tableName);//初始化基表并取得基表字段信息
int BCPGetColID(char *colName);//取得字段列号
int BCPInteger(char *colName,long *lpvalue);
//向数据库基表字段传送整型值(int--long)
int BCPDouble(char *colName,double *dpvalue);//向数据库基表字段传送浮点型值(float,real,double)
int BCPString(char *colName, char *cpvalue);
//向数据库基表字段传送字符型值(char,varchar,datetime,text)
int BCPBinary(char *colName, char *buf);
int BCPSaveDone();//保存结束批拷贝
int BCPSaveBatch();//保存不结束批拷贝
bool isEof();
int InitRead();
int Next();
int First();
//
char *GetErr();
int GetMsgCode();
int SetMsg(char *msg);
原来很长一段时间用delphi,所以有些地方可能受delphi风格所影响
些方法,主要目的是为了简化VC++访问SQL Server。现在已经差不多完成了第一个版本,
可是觉得还有些地方不好,想请高手指点。
(提供源码:ynzhangyao@sina.com;ynzhangyao@163.com)
简介:
类方法大概包括:
1.连接数据库
2.支持SQL操作
3.支持MS DTC分布式事务
4.支持批拷贝(将表内容按自定义格式导出,将变量值拷入数据库基表)
5.支持错误捕获
以下是此类的一些方法:
int GetColID(char *colName);//取列序号
int InitBCP(char *SourceTableName,//源表名
char *OutFileName,//输出文件名
char *LogFileName,//日志文件名,可以为NULL
const int BCPT//批拷贝类型,为DBOUT时,输出到文件,DBIN时输入到表
);
bool Connect(char *UserName,char *Password,char *SrvName);//创建连接
int SetDataBase(char *DBName);//打开指定数据库
int begin
Trans();//开始事务
int CommitTrans();//结束事务
int RollbackTrans();//回滚事务
int InitTrans();//初始化事务
int WriteLog(bool ErrLog,const char *format,...);
//写日志文件,errlog=true时写入错误日志
void SetAppName(char *AppName="sqlapp");//指定程序名
void SetLogFileName(char *FileName="dblog.log");//设置日志文件
void SetErrLogFile(char *FileName="errlog.log");//设置错误日志文件
void SetOutConsole(bool b=false);//是否输出到控制台
void WriteSQLLog();//写入SQL日志
int Open(const char *format,...);//执行查询,返结果集
int AddSQL(const char *format,...);//向缓冲区加入SQL
int ExecSQL();//执行缓冲区的SQL可返回结果集
int GetValues(char *colName,long *pValue);//取整型值
int GetValues(char *colName,double *pdValue);//取浮点型值
int GetValues(char *colName,char *pValue);//取字符(串)
以下为指针取值:
int pGetValue(char *colName,long *lpresult);//int ,short,long
int pGetValue(char *colName,double *pdresult);//float,double,real
int pGetValue(char *colName,char cpresult);
//char,text,varchar,money,smallmoney
int pGetDate(char *colName,char *strdate);//datetime
//--------------------//
int GetComputeValues(int computeID,int columnID,long *pcValue);
int GetComputeValues(int computeID,int columnID,double *pcValue);
//批拷贝到文件
long BatchCopyToFile(char *TableName, //表名
har *FileName, //文件名
int col[], //表列号集,首列为1
int cols, //表列号数
char *term, //分隔符
int termlen //分隔符长度
int StartRow //开始行号,首行为1
);
/* BatchCopyToFile
成功retrun 拷贝行数;
失败:1.如果已拷贝数大于0 return 已拷贝数
2.如果已拷贝数=0 return 错误代码
*/
int BCPInitTable(char *tableName);//初始化基表并取得基表字段信息
int BCPGetColID(char *colName);//取得字段列号
int BCPInteger(char *colName,long *lpvalue);
//向数据库基表字段传送整型值(int--long)
int BCPDouble(char *colName,double *dpvalue);//向数据库基表字段传送浮点型值(float,real,double)
int BCPString(char *colName, char *cpvalue);
//向数据库基表字段传送字符型值(char,varchar,datetime,text)
int BCPBinary(char *colName, char *buf);
int BCPSaveDone();//保存结束批拷贝
int BCPSaveBatch();//保存不结束批拷贝
bool isEof();
int InitRead();
int Next();
int First();
//
char *GetErr();
int GetMsgCode();
int SetMsg(char *msg);
原来很长一段时间用delphi,所以有些地方可能受delphi风格所影响