阅读此文章前请先完成<嵌入式PowerPC经过unixODBC/freetds访问SQL Server数据库(一) >与<嵌入式PowerPC经过unixODBC/freetds访问SQL Server数据库(二) >的阅读, 理解unixODBC/freetds的编译与部署工做,除此以外,下面代码中所用到的部分数据来自<嵌入式PowerPC经过unixODBC/freetds访问SQL Server数据库(二) >文章.sql
如需对代码部分进行验证,仅对部份内容(数据源、用户名、密码、insert语句等)进行修订便可。数据库
1, 测试源码ide
*#include <stdlib.h> #include <stdio.h> #include <sql.h> #include <sqlext.h> #include <sqltypes.h> SQLHDBC handlestmt; SQLHENV handleenv; SQLHDBC handlehdbc; bool ConnectDB() { long nRetState = 0; nRetState=SQLAllocHandle(SQLHANDLEENV,SQLNULLHANDLE,&handleenv); if ((nRetState != SQLSUCCESS) && (nRetState != SQLSUCCESSWITHINFO)) return false; nRetState=SQLSetEnvAttr(handleenv, SQLATTRODBCVERSION, (void)SQLOVODBC3, 0); if ((nRetState != SQLSUCCESS) && (nRetState != SQLSUCCESSWITHINFO)) return false; nRetState = SQLAllocHandle(SQLHANDLEDBC, handleenv, &handlehdbc); if ((nRetState != SQLSUCCESS) && (nRetState != SQLSUCCESSWITHINFO)) return false; SQLSetConnectAttr(handlehdbc, SQLLOGINTIMEOUT, (SQLPOINTER )5, 0); nRetState = SQLConnect(handlehdbc, (SQLCHAR) "odbc", SQLNTS, // 数据源 (SQLCHAR) "sa", SQLNTS, // 用户名 (SQLCHAR) "root", SQLNTS); // 密码 if ((nRetState != SQLSUCCESS) && (nRetState != SQLSUCCESSWITHINFO)) return false; printf("DB Connected !\n"); return true; } bool InsertDB(SQLCHAR szSqlCmd) { long nRetState = 0; nRetState=SQLAllocHandle(SQLHANDLESTMT, handlehdbc, &handlestmt); if ((nRetState != SQLSUCCESS) && (nRetState != SQLSUCCESSWITHINFO)) return false; nRetState=SQLExecDirect(handlestmt,szSqlCmd,SQLNTS); if ((nRetState != SQLSUCCESS) && (nRetState != SQLSUCCESSWITHINFO)) return false; printf("InsertDB Success\n"); return true; } bool CloseDB() { SQLFreeHandle(SQLHANDLESTMT,handlestmt); SQLDisconnect(handlehdbc); SQLFreeHandle(SQLHANDLEDBC,handlehdbc); SQLFreeHandle(SQLHANDLEENV, handleenv); printf("Excute Finished !\n"); return true; } int main(int argc,char argv[]) { char pSQLCommond = "insert into ReportServer.dbo.userTmp(ID) values(99)"; SQLCHAR pSQLCommondExe = (SQLCHAR)pSQLCommond; if(ConnectDB()) { InsertDB(pSQLCommondExe); CloseDB(); } return(0); }
*测试
2, 交叉编译
注意:交叉编译许连接odbc动态库。3d
3, 部署
将编译好的文件拷贝至powerpc设备中任何位置, 使用chmod 755 * 给编译好的文件添加执行权限,并将odbc库连接至/usr/lib下。unix
4, 测试验证
收到以下执行结果,表示数据库操做成功,注意:应在User用户下进行执行code