1

因此,我尝试使用允许您这样做的各种 Sql 帮助类在 C# 中填充一个空的 DataTable。我现在遇到一个错误,提示“列名 A 无效”......这对我来说没有意义,因为 DataTable 是空的,我正在尝试填充它,而不是从它的任何列中提取任何内容.

我在下面提取的第一条数据(从我的 SQL 数据库中)有一个 SKUStockCode 单元格,其中包含“A”,如 cmd2 中所示。DataTable 在下面称为 containsAllRelatedProductData。但是,我并没有尝试将此“A”写为我的新 DataTable 中的一列,我只是引用“A”,因为它是我试图从我的 SQL 数据库中获取数据的行的 SKUStockCode。

    foreach(char ch in containsRelatedProductsStringOnly.Rows[0]["SKURelatedProducts"].ToString()) 
    {
         if(ch != ' ')
         {
             stockCode = stockCode + ch;
         }
         else
         {
             SqlCommand cmd2 = new SqlCommand("SELECT SKUName FROM COM_SKU WHERE SKUStockCode = " + stockCode, con);
             SqlDataAdapter adapter2 = new SqlDataAdapter(cmd2);
             adapter2.Fill(containsAllRelatedProductData); //Error
             stockCode = "";
         }
    }

我不明白为什么错误会是 Invalid Column Name,除非在 DataTable 中创建新列有一些命名限制(我不知道)。再次出现错误,填充这个空的 DataTable(称为 containsAllRelatedProductData),而不是从中提取任何内容。有人知道为什么我会收到 Invalid Column Name 错误吗?

4

2 回答 2

3

您的命令如下所示:

SELECT SKUName FROM COM_SKU WHERE SKUStockCode = CODE0001

但它应该是这样的:

SELECT SKUName FROM COM_SKU WHERE SKUStockCode = 'CODE0001'

所以你必须用'如下封装你的输入字符串

foreach(char ch in containsRelatedProductsStringOnly.Rows[0]["SKURelatedProducts"].ToString()) 
{
     if(ch != ' ')
     {
         stockCode = stockCode + ch;
     }
     else
     {
         SqlCommand cmd2 = new SqlCommand("SELECT SKUName FROM COM_SKU WHERE SKUStockCode = '" + stockCode+"'", con);
         SqlDataAdapter adapter2 = new SqlDataAdapter(cmd2);
         adapter2.Fill(containsAllRelatedProductData); //Error
         stockCode = "";
     }
}
于 2013-07-30T16:17:59.647 回答
1

尝试以下操作:

new SqlCommand("SELECT SKUName FROM COM_SKU WHERE SKUStockCode = '" + stockCode + "'", con);
于 2013-07-30T16:20:47.790 回答