千家信息网

嵌入式PowerPC通过unixODBC/freetds访问SQL Server数据库(三)

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,阅读此文章前请先完成<嵌入式PowerPC通过unixODBC/freetds访问SQL Server数据库(一) >与<嵌入式PowerPC通过unixODBC/freetds访问SQL Serve
千家信息网最后更新 2025年02月03日嵌入式PowerPC通过unixODBC/freetds访问SQL Server数据库(三)

阅读此文章前请先完成<嵌入式PowerPC通过unixODBC/freetds访问SQL Server数据库(一) >与<嵌入式PowerPC通过unixODBC/freetds访问SQL Server数据库(二) >的阅读, 理解unixODBC/freetds的编译与部署工作,除此之外,下面代码中所用到的部分数据来自<嵌入式PowerPC通过unixODBC/freetds访问SQL Server数据库(二) >文章.

如需对代码部分进行验证,仅对部分内容(数据源、用户名、密码、insert语句等)进行修订即可。

1, 测试源码

*#include   #include   #include   #include   #include  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动态库。

3, 部署
将编译好的文件拷贝至powerpc设备中任何位置, 使用chmod 755 * 给编译好的文件添加执行权限,并将odbc库链接至/usr/lib下。

4, 测试验证
收到如下执行结果,表示数据库操作成功,注意:应在User用户下进行执行

0