gpt4 book ai didi

c# - 如何访问数据库中的特定数据字段

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:51 25 4
gpt4 key购买 nike

我正在开发一个库存软件,我想通过将其与 ProductCode 进行比较来访问 ProductName 和 Product Price,我已经存储在名为 ProductLog 的数据库表中的数据,Product Log 中的数据是:

ItemNO       Productode       ProductName      ProductPrice
1 123 lux 58
2 321 soap 68

现在我只想在名为 txtProductCode 的教科书中输入 productCode,然后按 Tab 键,然后自动填充 ProductPrice(txtProductPrice) 和 ProductName(txtProductName) 框。

我尝试比较产品代码和访问值的代码是:

  private void txtProdcutCode_Leave(object sender, EventArgs e)
{
///////////////////////////////////////////////////////////////////////

InitializeComponent();
string sql;

int productCode = 0;

productCode = Convert.ToInt32(txtProdcutCode.Text);

sql = "";
sql = "SELECT dbo.ProductLog.ProductName, dbo.ProductLog.ProductName";
sql = " WHERE ProductLog.ProductCode = " + txtProdcutCode.Text + "";


SqlConnection cn = new SqlConnection();
SqlCommand rs = new SqlCommand();
SqlDataReader sdr = null;
clsConnection clsCon = new clsConnection();


clsCon.fnc_ConnectToDB(ref cn);


rs.Connection = cn;
rs.CommandText = sql;
sdr = rs.ExecuteReader();


while (sdr.Read())
{

txtProductPrice.Text = sdr["ProductPrice"].ToString();
txtProductName.Text = sdr["ProductName"].ToString();
}


//lblTotalQuestion.Text = intQNo.ToString();

sdr.Close();
rs = null;
cn.Close();




/////////////////////////////////////////////////////////////////////////
}

但是在 productCode = Convert.ToInt32(txtProdcutCode.Text); 行中它说 Input string was not in a correct format.

请帮我解决这个问题。

编辑:

我也试过这段代码:

   private void txtProdcutCode_Leave(object sender, EventArgs e)
{
///////////////////////////////////////////////////////////////////////

string sql;

// int productCode = 0;

//productCode = Convert.ToInt32(txtProdcutCode.Text);

sql = "";
sql = "SELECT dbo.ProductLog.ProductName, AND dbo.ProductLog.ProductName";
sql = " WHERE dbo.ProductLog.ProductCode = " + txtProdcutCode.Text + "";


SqlConnection cn = new SqlConnection();
SqlCommand rs = new SqlCommand();
SqlDataReader sdr = null;
clsConnection clsCon = new clsConnection();


clsCon.fnc_ConnectToDB(ref cn);


rs.Connection = cn;
rs.CommandText = sql;
sdr = rs.ExecuteReader();


while (sdr.Read())
{

txtProductPrice.Text = sdr["ProductPrice"].ToString();
txtProductName.Text = sdr["ProductName"].ToString();
}


//lblTotalQuestion.Text = intQNo.ToString();

sdr.Close();
rs = null;
cn.Close();




/////////////////////////////////////////////////////////////////////////
}

但它说 Incorrect syntax near the keyword 'WHERE'. 意味着我在查询中调用数据库表时犯了错误,但我无法找出错误......

最佳答案

您的 SQL 存在一些问题。

  1. 您最初是要覆盖 sql 变量,但最后只有一个 WHERE 子句;
  2. 您没有 FROM 语句,因此数据库不知道您要从何处检索记录。
  3. 在 SELECT 语句中使用 AND 是不正确的;您只需要逗号来分隔字段。
  4. 您永远不会从数据库中选择 ProductPrice,而是选择 ProductName 两次!
  5. 您没有为查询使用参数化 SQL,这让您的应用容易受到 SQL 注入(inject)攻击。

为了解决这个问题(第 1-4 点,我将第 5 点留给你自己研究),

  sql = "";
sql = "SELECT dbo.ProductLog.ProductName, AND dbo.ProductLog.ProductName";
sql = " WHERE dbo.ProductLog.ProductCode = " + txtProdcutCode.Text + "";

应该是

  sql += "SELECT ProductName, ProductPrice";
sql += " FROM dbo.ProductLog";
sql += " WHERE ProductCode = '" + txtProdcutCode.Text + "'";

注意:此答案假定 txtProductCode.Text 的值为整数!

EDIT: It turns out that the column, ProductCode, was a VarChar. For OP and others reading this question, when you get SQL conversion errors check your column datatype in SQL server and make sure it matches what you're submitting.

这是基础。还有许多其他可以改进的地方,但这会让你继续前进。复习基本的 SQL 语法,一旦你掌握了它,就可以考虑让这个查询使用一个参数,而不是直接将 txtProductCode.Text 放入你的查询中。祝你好运!

关于c# - 如何访问数据库中的特定数据字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21076056/

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