C# 如何将数据从SQLiteDataTable传输到文本框
我正在尝试将数据从我的db(sqlite)链接到我的文本框,但我不知道具体如何 以下是我正在尝试的:C# 如何将数据从SQLiteDataTable传输到文本框,c#,forms,sqlite,C#,Forms,Sqlite,我正在尝试将数据从我的db(sqlite)链接到我的文本框,但我不知道具体如何 以下是我正在尝试的: private void btnUpdate_Click(object sender, EventArgs e) { con.Open(); adapter = new SQLiteDataAdapter("SELECT PRECO_PRODUTO FROM INGREDIENTES WHERE NOME_PRODUTO='"+listProdutos.
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
}
private void b更新\u单击(对象发送者,事件参数e)
{
con.Open();
adapter=new SQLiteDataAdapter(“从Ingreditentes中选择PRECO_PRODUTO,其中NOME_PRODUTO='”+列表PRODUTO.SelectedIndex+”,con);
适配器。填充(填充);
列表预编码=新列表();
预编码.Add(填充.Tables[0]);
con.Close();
tbprecproduto.Text=预编码[0];//此处出错
}
我想我需要一种将SQLiteDataTable转换为字符串的方法?我是db的新手。而且,如果有帮助的话…似乎您正在尝试将文本框的文本设置为数据表。这没有什么意义,因为类型
DataTable
与字符串不同。您首先必须像这样从表中提取数据:
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 ();
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 ();
}
当然,如果您只需要以下价格,您可以缩短此时间:
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]
相同
或者,您可以编写如下扩展方法:
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 ();
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 ();
}
然后调用预编码[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 ();
}
var preco = precoIng.FirstOrDefault ()?.Rows.Cast <DataRow> ().FirstOrDefault ()? ["PRECO_PRODUTO"]?.ToString () ?? "";
public静态字符串GetData(此DataTable,List columns=null)
{
var builder=newstringbuilder();
foreach(table.Rows中的DataRow行)
如果(列==null)
foreach(table.Columns中的DataColumn列)
builder.Append(column.ColumnName).Append(“:”).Append(row[column]).Append(;”);
其他的
foreach(列中的var列)
builder.Append(column.Append(“:”).Append(row[column]).Append(;”);
返回builder.ToString();
}
但是,我确实觉得您不希望整个表的数据是一个字符串,而是希望数据是特定的ID或其他内容。然而,为了帮助你,我需要更精确的信息
好吧,看来你真正想要的是这样的:
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 ();
}
var preco = precoIng.FirstOrDefault ()?.Rows.Cast <DataRow> ().FirstOrDefault ()? ["PRECO_PRODUTO"]?.ToString () ?? "";
var preco=precoIng.FirstOrDefault()?.Rows.Cast().FirstOrDefault()?[“PRECO_PRODUTO”]??"";
出现了什么错误?“无法将类型“System.Data.DataTable”隐式转换为“string”。如果我执行tbprecproduto.Text=Convert.ToString(预编码[0]);它只是在我的文本框上打印“table”NOME\u PRODUTO
不应该是一个名字吗?因为我假设listProdutos.SelectedIndex
是一个整数,不是吗?是的。。我做了“listProdutos.SelectedIndex”,这样查询就可以捕获与用户选择的产品相关的数据。是的,你是对的。当我写去删除查询的时候,我正在考虑这个问题,我忘记了这个细节哈哈。现在工作:)谢谢!!洛洛尔:多好的回答,谢谢,哈哈。赞成!实际上,我的目的是将所有关于“NOME_PRODUTO”的信息移动到我的文本框中。分别将NOME_PRODUTO设置为第一个文本框,将PRECO_PRODUTO设置为第二个文本框,将QNT_PRODUTO设置为最后一个文本框。我完成了第二个代码块的实现,但它什么也不返回(“”)。。。你能帮我吗?也许我还是做错了什么。Print()@IgorHenriques你能告诉我precoIng[0].Rows.Count
和string.Join(“;”,precoIng[0].Rows[0].ItemArray)的值吗?我知道-它包含任何东西都很奇怪。listProdutos.SelectedIndex
的示例值是什么?