使用c++ . net MySQL连接器的参数化查询不返回结果
Parameterized Query Returns no Results using C++ .Net MySQL Connector
我自己似乎找不到解决这个问题的办法。我使用这个通用函数从数据库中检索数据,如下所示:
int id = 29
ArrayList^ classes = getClassesGeneric("dep_id", "=", id.ToString());
但是,这不会返回任何结果。如果我通过MySQL工作台或没有参数查询数据库,它工作得很好。我错过了什么?
ArrayList^ Accessor::getClassesGeneric(String^ col, String^ op, String^ value)
{
ArrayList^ result = gcnew ArrayList();
this->cmd = gcnew MySqlCommand("SELECT * FROM rpos_db.classes WHERE @col @op @value;", this->con);
try
{
this->cmd->Parameters->AddWithValue("@col", col);
this->cmd->Parameters->AddWithValue("@op", op);
this->cmd->Parameters->AddWithValue("@value", value);
this->cmd->Prepare();
MySqlDataReader^ r = this->cmd->ExecuteReader();
while (r->Read())
{
Class^ c = gcnew Class();
c->id = r->GetInt32(0);
c->dep_id = r->GetInt32(1);
c->name = r->GetString(2);
c->code = r->GetString(3);
result->Add(c);
}
r->Close();
}
catch (Exception^ ex)
{
MessageBox::Show(ex->StackTrace, ex->Message);
}
return result;
}
像这样使用函数会产生缩进的结果:classes = getClassesGeneric("1", "=", "1");
参数只能用于替换文字,而不能用于替换对象名称或语法元素,例如=
操作符。你要么硬编码它。如果你想动态传递它们,你必须使用字符串操作:
ArrayList^ Accessor::getClassesGeneric(String^ col, String^ op, String^ value)
{
ArrayList^ result = gcnew ArrayList();
this->cmd = gcnew MySqlCommand
("SELECT * FROM rpos_db.classes WHERE " +
col + " " + op + " @value;", this->con);
try
{
this->cmd->Parameters->AddWithValue("@value", value);
this->cmd->Prepare();
MySqlDataReader^ r = this->cmd->ExecuteReader();
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 从返回的顶点缓冲区查询顶点结构
- C++ Poco SQL 查询不返回具有'between'和'and'日期时间绑定的结果
- 在 Qt 中选择查询返回"value: not positioned on a valid record"
- SQL 查询返回DB_E_NOTABLE
- glGenQuery总是返回非查询对象,glBeginQuery返回错误
- 检查从查询返回的任何行是否包含在字符串中的最高性能方法?
- boost ::几何查询返回索引
- 从ASP.NET应用程序查询Active Directory对象属性将返回旧结果
- QI在查询IAMStreamConfig时返回E_NOINTERFACE
- 返回"unknown error"的 SQLite 查询
- c++ MySql 连接器查询始终返回 true,即使出错也是如此
- select查询在编辑中总是返回-1
- 如何使用PyObject_CallObject查询复杂返回类型的数据?
- 查询后出现MongoDB套接字异常,未返回任何结果
- DeviceIoControl for SCSI查询命令返回错误50
- 为HTTPS查询返回简单字符串的c++库
- 使用c++ . net MySQL连接器的参数化查询不返回结果
- if(result==NULL)总是返回false,即使查询返回零行也是如此
- 查询的类成员返回错误的值