閱讀此文章前請先完成<嵌入式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