Как я могу получить int из базы данных, используя clr / c ++, и преобразовать его в system :: int - PullRequest
0 голосов
/ 06 января 2020

Проблема, с которой я столкнулся, заключается в том, что я хочу прочитать целочисленное значение из базы данных, но мне нужно выполнить преобразования 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*/
            }
         }

stringConversion

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));
}

Изменить: мое заявление поймать отсутствует, но оно не должно быть там.

1 Ответ

0 голосов
/ 06 января 2020

Я нашел решение этой проблемы, и оно на самом деле довольно базовое c.

При работе с объектом я могу просто привести его так же, как и к обычной переменной.

Например,

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