⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbapi_bcp.cpp

📁 ncbi源码
💻 CPP
字号:
/* * =========================================================================== * PRODUCTION $Log: dbapi_bcp.cpp,v $ * PRODUCTION Revision 1000.1  2004/06/01 19:22:11  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6 * PRODUCTION * =========================================================================== *//*  $Id: dbapi_bcp.cpp,v 1000.1 2004/06/01 19:22:11 gouriano Exp $* ===========================================================================**                            PUBLIC DOMAIN NOTICE*               National Center for Biotechnology Information**  This software/database is a "United States Government Work" under the*  terms of the United States Copyright Act.  It was written as part of*  the author's official duties as a United States Government employee and*  thus cannot be copyrighted.  This software/database is freely available*  to the public for use. The National Library of Medicine and the U.S.*  Government have not placed any restriction on its use or reproduction.**  Although all reasonable efforts have been taken to ensure the accuracy*  and reliability of the software and data, the NLM and the U.S.*  Government do not and cannot warrant the performance or results that*  may be obtained by using this software or data. The NLM and the U.S.*  Government disclaim all warranties, express or implied, including*  warranties of performance, merchantability or fitness for any particular*  purpose.**  Please cite the author in any work or product based on this material.** ===========================================================================** File Name:  $Id: dbapi_bcp.cpp,v 1000.1 2004/06/01 19:22:11 gouriano Exp $** File Description: Implementation of dbapi BCP * $Log: dbapi_bcp.cpp,v $* Revision 1000.1  2004/06/01 19:22:11  gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6** Revision 1.6  2004/05/17 21:17:02  gorelenk* Added include of PCH ncbi_pch.hpp** Revision 1.5  2003/08/05 19:23:52  vakatov* MSSQL2 --> MS_DEV1** Revision 1.4  2003/01/30 16:08:11  soussov* Adopt the new default DateTime constructor** Revision 1.3  2002/12/09 16:25:19  starchen* remove the text files from samples** Revision 1.2  2002/09/04 22:20:39  vakatov* Get rid of comp.warnings** Revision 1.1  2002/07/18 15:48:21  starchen* first entry** Revision 1.2  2002/07/18 15:16:44  starchen* first entry***============================================================================*/#include <ncbi_pch.hpp>#include "dbapi_bcp.hpp"#include "dbapi_bcp_util.hpp"USING_NCBI_SCOPE;// This program will CREATE a table with 5 rows , make BCP,// PRINT table on screen (each row will begin with <ROW> and ended by </ROW>)// and DELETE table from the database.//The following function illustrates a dbapi Bulk Copy (BCP) int main (int argc, char* argv[]){    int count=0;    I_DriverContext* my_context;    string server_name;    string driver_name;    const char* p = NULL;    CDB_Connection* con;	 CDB_BCPInCmd* bcp;    // Read args from a command line:    p= getParam('S', argc, argv);    if(p) server_name = p;    p= getParam('d', argc, argv);    if(p) driver_name = p;    if ( p == NULL) {       cout << endl << "usage: for Sybase dblib: -S STRAUSS -d dblib" << endl             << "for Sybase ctlib: -S STRAUSS -d ctlib" << endl            << "for MSSQL: -S MS_DEV1 -d ftds" << endl << endl;    }    //    Driver Manager allowes you to change a type of SQL server    //    without rebuilding your program.    //    Driver's types:    //         ctlib - to work with Sybase SQL Server (ct_ library);    //         dblib - to work with Sybase SQL Server (db library);    //         ftds  - to work with MS SQL Server.    C_DriverMgr drv_mgr;    string err_msg;    if (driver_name == "dblib") {         // create attr for dblib:"version=100"       // you have to set version if you need to work with BCP dblib Sybase 12.5        dblib_version.insert (map<string, string>::value_type (string("version"),                                                                         string("100")));        my_context = drv_mgr.GetDriverContext (driver_name, &err_msg, &dblib_version);    } else {        my_context = drv_mgr.GetDriverContext (driver_name, &err_msg);    }    if (!my_context) {        cout << "Can not load a driver " << driver_name << " ["              << err_msg << "] " << endl;        return 1;    }    //  Connect to the server:    try {        con = my_context->Connect (server_name, "anyone",                                              "allowed", I_DriverContext::fBcpIn);        //  Change default database:        CDB_LangCmd* set_cmd= con->LangCmd("use DBAPI_Sample");        set_cmd->Send();        CDB_Result* r;        while(set_cmd->HasMoreResults()) {	        r= set_cmd->Result();	        if(r) delete r;        }        delete set_cmd;        // Create table in database for the test            CreateTable(con);        //Set textsize to work with text and image        set_cmd= con->LangCmd("set textsize 1000000");        set_cmd->Send();        while(set_cmd->HasMoreResults()) {	        r= set_cmd->Result();	        if(r) delete r;        }        delete set_cmd;        //"Bulk copy in" command 	     bcp = con->BCPIn("BcpSample", 5);  	     CDB_Int int_val;        CDB_Float fl_val;        CDB_DateTime date_val(CTime::eCurrent);        CDB_VarChar str_val;        CDB_Text pTxt;	     int i;        pTxt.Append("This is a test string.");        // Bind data from a program variables          bcp->Bind(0, &int_val);        bcp->Bind(1, &fl_val);        bcp->Bind(2, &date_val);        bcp->Bind(3, &str_val);        bcp->Bind(4, &pTxt);	     for(i= 0; *file_name[i] != '\0'; i++) {            int_val = i;            fl_val = i + 0.999;            date_val = date_val.Value();            str_val= file_name[i];                pTxt.MoveTo(0);            //Send row of data to the server	         bcp->SendRow();             //Save any preceding rows in server	         if (count == 2) {	        	    bcp->CompleteBatch();                count = 0;	         }            count++;	     }        //End a bulk copy         bcp->CompleteBCP();        // Print results on screen        ShowResults(con);        //Delete table from database        DeleteTable(con); 	     delete bcp;	     delete con;    	    } catch (CDB_Exception& e) {	   HandleIt(&e);      DeleteTable(con);      return 1;    }    return 0;}    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -