Linux下使用C/C 访问数据库——SQL Server篇
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-05-17
cpy(this ->USERNAME, "sa"); } else { this ->USERNAME = new char[userName.length()]; strcpy(this ->USERNAME, userName.c_str()); } } void SybaseManager::initConnection() { string Charset = "UTF-8"; dbinit(); LOGINREC *loginREC = dblogin(); DBSETLUSER(loginREC, this ->USERNAME); DBSETLPWD(loginREC, this ->PASSWORD); DBSETLCHARSET(loginREC, Charset.c_str()); dbProcess = dbopen(loginREC, this ->HOSTS); if ( dbProcess == FAIL ) { std::cout << "Connect to SQL Server failed!" << std::endl; } if ( dbuse( dbProcess, this ->DBNAME ) == FAIL ) { std::cout << "Use table failed!" << std::endl; } } bool SybaseManager::runSQLCommand( string sql ) { dbcmd(dbProcess, sql.c_str()); if ( dbsqlexec(dbProcess) == FAIL ) { std::cout << "Query from database failed!" << std::endl; } DBINT result_code; vector<string> objectValue; StringTools stringTools; sql = stringTools.filterString(sql); while ( (result_code = dbresults(dbProcess)) != NO_MORE_RESULTS ) { struct Column { char* colName; char* colBuffer; int colType, colSize, colStatus; } *columns, *pCol; int nColumns; int rowNo; if ( result_code == SUCCEED ) { nColumns = dbnumcols(dbProcess); if ( (columns = (Column*)calloc(nColumns, sizeof(struct Column))) == NULL ) { std::cout << "Error at bind data" << std::endl; return false; } for ( pCol = columns; pCol - columns < nColumns; pCol ) { int colNo = pCol - columns 1; pCol ->colName = dbcolname(dbProcess, colNo); pCol ->colType = dbcoltype(dbProcess, colNo); pCol ->colSize = dbcollen(dbProcess, colNo); if ( SYBCHAR != pCol ->colType ) { pCol ->colSize = dbwillconvert(pCol ->colType, SYBCHAR); } if ( (pCol ->colBuffer = (char*)calloc(1, pCol ->colSize 1)) == NULL ) { |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Linux下使用C/C 访问数据库——SQL Server篇的所有评论