C++ SQL Server连接,然后以特定的方式读取表 如何从SQL Server 2008中读取表到C++中的向量,方法如下:

C++ SQL Server连接,然后以特定的方式读取表 如何从SQL Server 2008中读取表到C++中的向量,方法如下:,c++,sql-server-2008,vector,C++,Sql Server 2008,Vector,SQL表2008表 把每一个奇数列变成一个唯一的向量 array[565, 497, 467, 488, //1att column 472, 483, 480, 547, //3att column 483, 488, 494, 477, //5att column ... 502, 491, 471, 516, //Last odd att column ] 我正在使用: #include <vecto

SQL表2008表

把每一个奇数列变成一个唯一的向量

 array[565, 497, 467, 488,  //1att column 
       472, 483, 480, 547,  //3att column
       483, 488, 494, 477,  //5att column
       ...
       502, 491, 471, 516,  //Last odd att column
       ]
我正在使用:

#include <vector>
size_t size = 10;                //HOW TO GET THE SIZE
std::vector<int> array(size);    // make room for ,
                                 // and initialize them to 0

for(int i=0; i<size; ++i){
    array[i] = i;
}
...

我的主要问题是如何用C++和C++进行通信,然后把表读入向量中…我正在使用Visual Studio 2008

有很多方法可以做到这一点:

从中提取单个列 数据库 从数据库中提取奇数列 从数据库获取整个表 获取单个列 在这种方法中,您告诉数据库选择一列。通过迭代结果集来填充单个向量。对您感兴趣的每一列重复此操作,对每一列使用不同的向量

从数据库中提取奇数列 告诉数据库返回您感兴趣的所有列在SELECT语句中使用许多列。从结果集中读取记录。将字段中的附加值放入适当的向量中。对结果集中的每条记录重复读取和提取

正在从数据库中获取整个表。 与上面类似。告诉数据库获取所有列。当存在结果集记录时,将感兴趣的字段中的值复制到适当的向量中

后一种方法可能最快,因为数据库从表中返回行而不进行筛选。其他方法要求数据库创建新的记录结果集,从现有表中进行筛选。最快的算法是通过分析得到的

编辑1:示例代码 我不使用SQLServer2008,而是使用MySQL。因此,此代码不能完全用于您的目的

const char * select_statement[] =
"SELECT 1att, 3att, 5att, 7att, 9att\n"
"FROM data_table;\n";

Result_Set_Type * p_result_set = 0;
p_result_set = database.execute_query(select_statement);
if (p_result_set)
{
    while (p_result_set->next())
    {
        att1_vector.push_back(p_result_set->get_value("1att");
        att3_vector.push_back(p_result_set->get_value("3att");
        att5_vector.push_back(p_result_set->get_value("5att");
        att7_vector.push_back(p_result_set->get_value("7att");
        att9_vector.push_back(p_result_set->get_value("9att");
    }
}

假设您有一个名为test的mysql数据库,其中有一个名为Persons的表和一个名为PersonId的列


请张贴表格的数据结构。在MySql中,这是由descripe命令执行的。这个表只由浮点数组成,我有一个10列的表,它们都是浮点数。。。
const char * select_statement[] =
"SELECT 1att, 3att, 5att, 7att, 9att\n"
"FROM data_table;\n";

Result_Set_Type * p_result_set = 0;
p_result_set = database.execute_query(select_statement);
if (p_result_set)
{
    while (p_result_set->next())
    {
        att1_vector.push_back(p_result_set->get_value("1att");
        att3_vector.push_back(p_result_set->get_value("3att");
        att5_vector.push_back(p_result_set->get_value("5att");
        att7_vector.push_back(p_result_set->get_value("7att");
        att9_vector.push_back(p_result_set->get_value("9att");
    }
}
   #include <cppconn/driver.h>
   #include <cppconn/exception.h>
   #include <cppconn/resultset.h>
   #include <cppconn/statement.h>
   #pragma comment(lib,"mysqlcppconn.lib")
   int _tmain(int argc, _TCHAR* argv[])
   {
    // create a connection
    sql::Driver* sql::Driver *driver = get_driver_instance();
    sql::Connection* con = driver->connect("tcp://127.0.0.1:3306", "user", "password");

    // get database
    con->setSchema("test");

    // create query
    sql::Statement* stmt = con->createStatement();
    sql::ResultSet* res = stmt->executeQuery("SELECT * from Persons");

    // parse result
    while (res->next()) {
        std::cout << res->getString("PersonId") << std::endl;
    }

    //cleanup
    delete res;
    delete stmt;
    delete con;

    return 0;
}