SqlDataAdapter 未加载数据表 - C++
SqlDataAdapter not loading datatable - C++
但是,我一直在尝试将SQL数据库加载到C++的数据表中;它似乎不想工作。不过,连接正在工作,因为DataReader工作。这是我的代码
void importDatabase() {
SqlConnection con;
SqlDataAdapter^ da;
SqlCommand cmd;
DataTable^ dt;
int count = 1;
try {
con.ConnectionString = "Data Source=MYNAME\SQLEXPRESS;Initial Catalog=VinylRecords;Integrated Security=True";
cmd.CommandText = "SELECT * FROM Records";
cmd.Connection = %con;
con.Open();
da = gcnew SqlDataAdapter(%cmd);
dt = gcnew DataTable("Records");
Console::Write(da->ToString());
da->Fill(dt);
for (int i = 0; i < dt->Rows->Count - 1; i++) {
String^ value_string;
value_string = dt->Rows[i]->ToString();
Console::WriteLine(dt->Rows[i]->ToString());
count++;
}
cout << "There are " << count << " many records";
}
catch (Exception^ ex) {
Console::WriteLine(ex->ToString());
}
}
请注意,我稍微更改了源名称以在此处发布,但仅第一部分。 我的代码有什么问题?
所以,问题就在这里:
dt->Rows[i]->ToString()
Rows[i] 是一个 Row 对象。Row 类的 ToString() 方法总是打印出完全限定的 typename,这就是你所看到的。所以这在技术上工作得很好。你需要做的是:你需要访问该行中的特定列并获取它的值,然后输出它。
大致如下:
foreach (DataRow dr in dt.Rows)
{
Console.Write(dr.Field<int>("ColumnOne"));
Console.Write(" | ");
Console.WriteLine(dr.Field<string>("ColumnTwo"));
}
我不完全确定使用 C++\CLI 时访问 DataTable 内部特定单元格的语法。因此,我提供了等效的 C# 来解释为什么您获得托管类型名称(例如"System.Data.DataRow")的输出,而不是 Row 列内的信息。
另外,我注意到您用"mysql"标记了这个问题,但您使用的是 ADO.NET System.Data.SqlClient命名空间。SqlDataReader 和 SqlDataAdapter 类仅适用于 TSQL(Microsoft 的 SQL Server 数据库)如果您实际连接到 mysql 数据库,则需要使用 System.Data.OdbcDataAdapter 类。您可以在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/ms254931.aspx
相关文章:
- 链表,反向函数,数据结构
- 为什么C中的通用链表中存储的数据已损坏
- 将从格式化文本文件读取的文本数据存储到链表
- 我对数据结构、双向链表有一些问题
- 如何在 c++ 中比较 2 个链表并将匹配的数据放入另一个链表中
- 使用带有链表的堆栈数据结构将中缀转换为后缀
- 如何从 CSV 获取数据并将其存储在 C++ 中的表对象中
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- 使用链表数据结构打印多项式
- UE4 数据表结构错误
- SqlDataAdapter 未加载数据表 - C++
- 芯片的数据表不说明如何与之通信
- 使用临时数据表修复内存泄漏(堆与堆栈)
- 将数据表单文本文件读取到数组中时出现问题
- 如何在C++中实现具有不同列数据类型的数据表
- 使用 IPSI 可取值检索 DVB 数据表
- 使用命令行界面创建数据表
- 将数据集的数据表绑定到 DataGridView
- 如何轻松地将数据表格式化为C++
- 将数据表传递给非托管环境 (Visual C# 2005)