如何使用 clr/c++ 从数据库中获取 int 并将其转换为 system::int

How can I get an int from a database using clr/c++ and convert it into a system::int

我遇到的问题是我想从数据库中读取一个整数值,但我需要进行 CLR 转换才能执行此操作,因为它需要附加到我数据库中的另一个整数上,然后再写回数据库。我已经在这个项目中完成了字符串转换,所以我不明白为什么我不能做整数。

我已有的代码:

try
        {
            OleDbDataReader^ reader = testData.openData(fieldEntity, field, tableName);
            while (reader->Read())
            {
                string userName, passWord;
                String^ username = reader["username"]->ToString();
                String^ password = reader["password"]->ToString();
                stringConversion(username, userName);
                stringConversion(password, passWord);
                /* this means that i will have the System::String^ as system::string and I want the same as this but for integers not strings*/
            }
         }

字符串转换

void stringConversion(String ^ s, string& os)
{
    using namespace Runtime::InteropServices;
    const char* chars =
        (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
    os = chars;
    Marshal::FreeHGlobal(IntPtr((void*)chars));
}

编辑:我的 catch 语句丢失了,但它不需要存在。

我已经找到了这个问题的解决方案,它实际上是相当基础的。

在处理一个对象时,我可以用与普通变量相同的方式转换它。

例如,

    OleDbDataReader^ reader = testData.openData(fieldEntity, field, tableName);
        while (reader ->Read())
        {
            Object^ healthptr = reader["Health"];
            health = (int)healthptr;
        }