gpt4 book ai didi

c# - 如何在 WinForm 应用程序的文本框中显示特定的数据库条目

转载 作者:可可西里 更新时间:2023-11-01 10:56:22 25 4
gpt4 key购买 nike

更新:谢谢大家,代码不是问题,尽管有关 SQL 注入(inject)的信息很有用,但我的问题是我使用的是旧版本的数据库,它没有相应的产品 ID,因此它使用的是第一个产品能找到。现在感觉很愚蠢,但感谢您的建议。

我目前有以下代码:

SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\v11.0 AttachDbFilename=C:\Users\h8005267\Desktop\Practical Project\Build\System4\System\StockControl.mdf;Integrated Security=True;Connect Timeout=30");
connection.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM Product WHERE ProductID='" + textBox3.Text + "'", connection);
SqlDataReader re = cmd.ExecuteReader();

if (re.Read())
{
textBox4.Text = re["ProductTitle"].ToString(); // only fills using first product in table
textBox5.Text = re["ProductPublisherArtist"].ToString();
comboBox1.Text = re["ProductType"].ToString();
textBox6.Text = re["Price"].ToString();
}
else
{
MessageBox.Show("Please enter a valid item barcode");
}
re.Close();
connection.Close();

我现在遇到的问题是,虽然文本框显示了按钮点击的信息,但显示的信息只是数据库中的第一行数据,而不是sql语句中textbox3对应的行

最佳答案

试试这个。避免按照您的方式动态构建 SQL 语句。您正在打开您的数据库以面临 SQL 注入(inject)的风险。 insead 使用的参数。

using (var connection = new SqlConnection("connection string"))
{
connection.Open();
using (var cmd = new SqlCommand("SELECT * FROM Product WHERE ProductID=@MYVALUE", connection))
{
cmd.Parameters.Add("@MYVALUE", SqlDbType.VarChar).Value = textBox3.Text;
SqlDataReader re = cmd.ExecuteReader();

if (re.Read())
{
textBox4.Text = re["ProductTitle"].ToString(); // only fills using first product in table
textBox5.Text = re["ProductPublisherArtist"].ToString();
comboBox1.Text = re["ProductType"].ToString();
textBox6.Text = re["Price"].ToString();
}
else
{
MessageBox.Show("Please enter a valid item barcode");
}
}
}

关于c# - 如何在 WinForm 应用程序的文本框中显示特定的数据库条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15970472/

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