0

我的数据库中有一个名为:product_no 的列,它的数据类型是 char(25)

我希望能够通过在搜索框中输入 product_no 来搜索产品名称并检索结果。

我正在尝试下面的代码,但它不起作用。当我用数据库中数据类型为 int 的其他列替换 product_no 时,下面的代码有效。

我怀疑这段代码不起作用,因为 product_no 不是 int。有任何想法吗?

public string getproductdetail(int ID)
{
    Product prod = new Product();
    string connectionString =
      "server=server;uid=user;pwd=pwd;database=DB;";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        string sql = "Select name from dbo.product(nolock) Where product_no = " + ID.ToString();
        connection.Open();
  SqlCommand command = new SqlCommand(sql, connection);
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            prod.name          = reader["name"].ToString();
        }
    }
}
}
[DataContract]
public class Product
{
[DataMember]
public string name;
}
4

3 回答 3

1

像这样尝试:

public string getproductdetail(int ID)
    {
        Product prod = new Product();
    String product_no=Convert.ToString(Id);
        string connectionString =
          "server=server;uid=user;pwd=pwd;database=DB;";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            string sql = "Select name from dbo.product(nolock) Where product_no = " + product_no.ToString();
            connection.Open();
      SqlCommand command = new SqlCommand(sql, connection);
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                prod.name          = reader["name"].ToString();
            }
        }
    }
    }
    [DataContract]
    public class Product
    {
    [DataMember]
    public string name;
    }
于 2013-07-18T07:50:57.320 回答
1

=在您使用运算符之前不需要它,如果您想使用between,等><那么您应该将其转换CharInt数据类型。除此之外,如果您想对该列中的记录进行排序,那么您也应该转换它。

要在 SQL 查询中转换值的数据类型,您可以试试这个

string sql = 
    "Select name from dbo.product(nolock) Where CONVERT(int, product_no) = @product_no";

有关适当的文档,请访问

于 2013-07-18T07:04:27.697 回答
1

如果 product_no 不是 int 类型,则应在查询中使用 ' 字符来输入参数。我建议使用 SqlParameter

using (SqlConnection connection = new SqlConnection(connectionString))
    {
        string sql = "Select name from dbo.product(nolock) Where product_no = @product_no";
        connection.Open();
        SqlCommand command = new SqlCommand(sql, connection);
        command.Parameters.Add(new SqlParameter("@product_no", ID);
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            prod.name = reader["name"].ToString();
        }
    }
于 2013-07-18T07:06:18.550 回答