-1
您好我是新的C#和我有一个窗口与一个文本框Barcode_txtBx
和按钮Search_btn
其过滤中的记录数据表dt
到一个记录和具有另一种文本框Manufacturer_txtBx
来显示数据表形成列制造商。我可以做过滤,但我找不到在文本框Manufacturer_txtBx
中显示相关列的方法。这是迄今为止的代码。文本框显示值从接入
private void Search_btn_Click(object sender, EventArgs e)
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "Select * from BookInTable where Barcode = '" + Barcode_txtBx.Text + "'";
OleDbDataReader reader = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
Manufacturer_txtBx.Text = "";
connection.Close();
}
目前Manufacturer_txtBx正在显示一个空字符串,这样我没有得到一个错误
'DataTable'通常意味着结果中有多行,但我假设你只有一行。我建议你看一下DataTable的MSDN文档,它是Rows属性。另外,如果你只是希望单行的制造商考虑'SELECT'而不是'*',那么执行'ExecuteScalar'而不是'ExecuteReader'。 – Crowcoder
此外,您可以广泛开放SQL注入。你知道如果有人将其输入条形码盒会发生什么? :'123';从[BookInTable]中删除; --'。你可以通过[参数化你的查询]来缓解这个问题。(http://stackoverflow.com/questions/14376473/what-are-good-ways-to-prevent-sql-injection) – Crowcoder
数据库最初有多个记录,但只有一个在DataTable过滤后,实际相关数据输出到5个不同的文本框(Manaufaturer,Type,Model,PartNumber和AdditionalNotes)。但为了方便,我只专注于一个。我刚刚在学习C#的时候,在我中风后工作不适,现实只是为了让我的大脑忙碌起来,提高我的认知能力。所以这个数据库永远不会被使用。我会认为在文本框中输入掩码将会阻止SQL注入,但我现在还没有尝试过。 –