如何使用 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;
}
我遇到的问题是我想从数据库中读取一个整数值,但我需要进行 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;
}