gpt4 book ai didi

c# - 如何将数据从 SQLiteDataTable 传输到 TextBox

转载 作者:行者123 更新时间:2023-12-03 09:56:11 24 4
gpt4 key购买 nike

我正在尝试将我的数据库(sqlite)中的数据链接到我的文本框,但我不知 Prop 体如何......

这是我正在尝试的:

private void btnUpdate_Click(object sender, EventArgs e)
{
con.Open();

adapter = new SQLiteDataAdapter("SELECT PRECO_PRODUTO FROM INGREDIENTES WHERE NOME_PRODUTO='"+listProdutos.SelectedIndex+"'", con);
adapter.Fill(populate);

List<DataTable> precoIng = new List<DataTable>();
precoIng.Add(populate.Tables[0]);

con.Close();

tbPrecoProduto.Text = precoIng[0]; //error here
}

我想我需要一种将 SQLiteDataTable 转换为字符串的方法?我是数据库方面的新手。 This is my tablethis is my form design ,如果有帮助...

最佳答案

似乎您正在尝试将 TextBox 的文本设置为 DataTable。这不太有意义,因为类型 DataTablestring 不同.您首先必须像这样从表中提取数据:

var builder = new StringBuilder ();
foreach (var rowObject in precoIng [0].Rows)
{
var row = (DataRow) rowObject;
var id = row ["ID_PRODUTO"].ToString ();
var name = row ["NOME_PRODUTO"].ToString ();
var price = row ["PRECO_PRODUTO"].ToString ();
var count = row ["QNT_PRODUTO"].ToString ();

builder.AppendLine ($"Id: {id}; Name: {name}; Price: {price}; Count: {count}");
}

tbPrecoProduto.Text = builder.ToString ();

如果您只想要例如价格,您当然可以缩短它:
var builder = new StringBuilder ();
foreach (var rowObject in precoIng [0].Rows)
{
var row = (DataRow) rowObject;
var price = row ["PRECO_PRODUTO"].ToString ();

builder.AppendLine (price);
}

tbPrecoProduto.Text = builder.ToString ();

而且,顺便说一句, precoIng[0]将始终与 populate.Tables[0] 相同.

或者,您可以编写这样的扩展方法:
public static string GetData (this DataTable table)
{
var builder = new StringBuilder ();
foreach (DataRow row in table.Rows)
foreach (DataColumn column in table.Columns)
builder.Append (column.ColumnName).Append (": ").Append (row [column]).Append ("; ");

return builder.ToString ();
}

然后调用 precoIng[0].GetData()以字符串形式获取数据。

如果您希望能够过滤要打印的数据,您可以执行以下操作:
public static string GetData (this DataTable table, List <string> columns = null)
{
var builder = new StringBuilder ();
foreach (DataRow row in table.Rows)
if (columns == null)
foreach (DataColumn column in table.Columns)
builder.Append (column.ColumnName).Append (": ").Append (row [column]).Append ("; ");
else
foreach (var column in columns)
builder.Append (column).Append (": ").Append (row [column]).Append ("; ");

return builder.ToString ();
}

但是,我确实觉得好像您不希望将整个表的数据作为字符串,而是希望将数据转换为某些 id 或其他内容。但是,为了帮助您解决这个问题,我需要更准确的信息。

好的,所以看起来你真正想要的是这样的:
var preco = precoIng.FirstOrDefault ()?.Rows.Cast <DataRow> ().FirstOrDefault ()? ["PRECO_PRODUTO"]?.ToString () ?? "";

关于c# - 如何将数据从 SQLiteDataTable 传输到 TextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50429978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com