如何读取SqlDataReader列

时间:2015-09-28 05:22:38

标签: c#

我正在处理我的Windows窗体应用程序。在这个winform中,我有一个 checkListBox ,它绑定了我的sql db中的数据。我试图将checkListBox的checkedItem匹配到我的sql表列的文本,该文本存储为nvarchar数据类型。我运行调试模式,发现它在程序执行时跳过整个while循环。我不知道为什么,因为有价值的名称items确实显示了检查checkListBox中的哪个复选框

这是我的代码。

foreach(var items in checkListBox1.CheckedItems){

    string query = "select * from my_table WHERE employeeName = '"+items+"'"

    SqlCommand myCommand = new SqlCommand(query, myConn);
    SqlDataReader dr = myCommand.ExecuteReader();

    while(dr.Read()){
        //read the column    
    }
}

这是屏幕截图。我试图在列中获取chineseName(不要担心它是什么大声笑)

enter image description here

2 个答案:

答案 0 :(得分:1)

您的代码中存在多个问题。您不需要在ForEach循环中编写查询。如果您希望从checklistbox中获取多个值,则equalto = operator不是您的朋友,则需要使用IN运算符。现在查看下面的例子。

<table class="table">
<colgroup>
    <col width="200px">
    <col width="100px">
    <col width="100px">
    <col width="100px">
</colgroup>
 <tr class="table-row">
    <td class="table-cell">
        <div class="table-cell-table">
            <div class="table-cell-text">line 0 cell 1 text</div>
            <div class="table-cell-icon"></div>
        </div>
    </td>
    <td class="table-cell">line 0 cell 2</td>
    <td class="table-cell">line 0 cell 3</td>
    <td class="table-cell">line 0 cell 4</td>
</tr>
<tr class="table-row">
    <td class="table-cell">
        <div class="table-cell-table">
            <div class="table-cell-text">line 1 cell 1 long text</div>
            <div class="table-cell-icon"></div>
        </div>
    </td>
    <td class="table-cell">line 1 cell 2</td>
    <td class="table-cell">line 1 cell 3</td>
    <td class="table-cell">line 1 cell 4</td>
</tr>
<tr class="table-row">
    <td class="table-cell">
        <div class="table-cell-table">
            <div class="table-cell-text">line 2 cell 1 very very long text</div>
            <div class="table-cell-icon"></div>
        </div>
    </td>
    <td class="table-cell">line 2 cell 2</td>
    <td class="table-cell">line 2 cell 3</td>
    <td class="table-cell">line 2 cell 4</td>
</tr>
</table>

答案 1 :(得分:0)

由于数据库中的数据类型是nvarchar,请通过修改代码中的以下语句来尝试它

string query = "select * from my_table WHERE employeeName = '"+items+"'"

string query = "select * from my_table WHERE employeeName = N'"+items.ToString()+"'"

前缀'N'用于从已检查项目

进行比较的值