Solved:Query 使用 mysql.h 在 C++ 中的结果(到 CString)
Solved:Query Results (to CString) in C++ using mysql.h
我目前正在尝试使用 C++ 并使用来自 Oracle 的 mysql c api 构建数据库连接。首先,它工作正常。
如果我查询像“select username [...] where id=1”这样的 col,我会得到我的结果:
testuser.
但是如果我尝试“select * from...”我会得到:
1 //正确的ID
t // 只有第一个字母。
我到处找了很多地方,甚至在这里,但还是想不出如何获得完整的结果:
1
测试用户
一如既往:感谢您的宝贵时间和经验。
纳斯滕
我的代码:
#include "mysql.h"
[...]
sendToLog(_T("Abfrage Starten."));
MYSQL* m_pConn = ConnectToDatabase();
ASSERT(m_pConn != nullptr);
MYSQL_RES *m_pResultSet;
MYSQL_ROW m_mysqlRow;
//Query:
mysql_query(m_pConn, "SELECT * FROM fplaner.user WHERE ll_UserID=1");
//Result speichern
m_pResultSet = mysql_store_result(m_pConn);
//Resultset durchgehen
ASSERT(m_pResultSet != nullptr);
int m_llResCount = mysql_num_fields(m_pResultSet);
if (m_llResCount == 0)
{
sendToLog(_T("ResultSet ist NICHT null aber Leer."));
}
else
{
while ((m_mysqlRow = mysql_fetch_row(m_pResultSet)))
{
for (int i = 0; i < m_llResCount; i++)
{
if (m_mysqlRow == NULL)
{
sendToLog(_T("Ungültiges ResultSet erhalten on COunt: "+i));
}
else
{
sendToLog(_T("Gültiges ResultSet erhalten."));
CString strTest(*m_mysqlRow[i]);
//CString strTest(*m_mysqlRow);--> gives correct name when query with select name
from...
m_mysqlRow
sendToLog((strTest));
}
}
}
}
问题已解决:
结果集是指针上的 Char 指针。通过用 * 取消引用它,如果强的话,它只会提供第一个字符。所以没有它工作正常:
更改“CString strTest(*m_mysqlRow[i]);”到“CString strTest(m_mysqlRow[i]);” .
它将按预期工作。
我目前正在尝试使用 C++ 并使用来自 Oracle 的 mysql c api 构建数据库连接。首先,它工作正常。
如果我查询像“select username [...] where id=1”这样的 col,我会得到我的结果:
testuser.
但是如果我尝试“select * from...”我会得到:
1 //正确的ID
t // 只有第一个字母。
我到处找了很多地方,甚至在这里,但还是想不出如何获得完整的结果:
1
测试用户
一如既往:感谢您的宝贵时间和经验。
纳斯滕
我的代码:
#include "mysql.h"
[...]
sendToLog(_T("Abfrage Starten."));
MYSQL* m_pConn = ConnectToDatabase();
ASSERT(m_pConn != nullptr);
MYSQL_RES *m_pResultSet;
MYSQL_ROW m_mysqlRow;
//Query:
mysql_query(m_pConn, "SELECT * FROM fplaner.user WHERE ll_UserID=1");
//Result speichern
m_pResultSet = mysql_store_result(m_pConn);
//Resultset durchgehen
ASSERT(m_pResultSet != nullptr);
int m_llResCount = mysql_num_fields(m_pResultSet);
if (m_llResCount == 0)
{
sendToLog(_T("ResultSet ist NICHT null aber Leer."));
}
else
{
while ((m_mysqlRow = mysql_fetch_row(m_pResultSet)))
{
for (int i = 0; i < m_llResCount; i++)
{
if (m_mysqlRow == NULL)
{
sendToLog(_T("Ungültiges ResultSet erhalten on COunt: "+i));
}
else
{
sendToLog(_T("Gültiges ResultSet erhalten."));
CString strTest(*m_mysqlRow[i]);
//CString strTest(*m_mysqlRow);--> gives correct name when query with select name
from...
m_mysqlRow
sendToLog((strTest));
}
}
}
}
问题已解决:
结果集是指针上的 Char 指针。通过用 * 取消引用它,如果强的话,它只会提供第一个字符。所以没有它工作正常:
更改“CString strTest(*m_mysqlRow[i]);”到“CString strTest(m_mysqlRow[i]);” .
它将按预期工作。