Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在SQL中获取字符串行?_C#_Sql - Fatal编程技术网

C# 如何在SQL中获取字符串行?

C# 如何在SQL中获取字符串行?,c#,sql,C#,Sql,这是我的桌子 MY_TABLE | id | first4 | last4 | reason | -------------------------------- | 1 | 123 | 456 | Cancel | | 2 | 123 | 789 | Correct| 问题 它进入循环并获取信息,但最后只显示最后一行 例如: 我尝试实现的是一个如下呈现的字符串: id = 1,2; first4 = 123,123; last4 = 456,789; reason

这是我的桌子

MY_TABLE

| id | first4 | last4 | reason |
--------------------------------
|  1 |   123  |  456  | Cancel |
|  2 |   123  |  789  | Correct|
问题

它进入循环并获取信息,但最后只显示最后一行

例如:

我尝试实现的是一个如下呈现的字符串:

id = 1,2;
first4 = 123,123;
last4 = 456,789;
reason = Cancel,Correct
在C中我使用

点名

foreach (Dictionary<string, string> column in rows)
{
    interchange.DownloadBlacklist.id = column["id"] ;
    interchange.DownloadBlacklist.first4 = column["first4"];
    interchange.DownloadBlacklist.last4 = column["last4"];
    interchange.DownloadBlacklist.status =  column["status"];
}
最简单的方法是什么?因为我设法提取了信息,但只得到了表的最后一行,而没有得到我试图实现它的方式。

在您的代码中:

while (render.Read())
{
    while (render.Read())
    {
        column = new Dictionary<string, string>();

        column["id"] = string.Join(",", render["id"]);
        column["first4"] = string.Join(",", render["first4"]);
        column["last4"] = string.Join(",", render["last4"]);
        column["reason"] = string.Join(",", render["reason"]);

        rows.Add(column);
    }
    render.close();
}
您已经执行了两个while循环,但是在关闭名为render的SqlDataReader时,在内部执行了两个while循环

当您尝试在外部文件中再次读取时,这可能会引发异常,从而产生循环效果

移动ReReal.在外部结束时关闭,并考虑在代码中减少一个循环中的代码

while (render.Read())
{
    while (render.Read())
    {
        column = new Dictionary<string, string>();

        column["id"] = string.Join(",", render["id"]);
        column["first4"] = string.Join(",", render["first4"]);
        column["last4"] = string.Join(",", render["last4"]);
        column["reason"] = string.Join(",", render["reason"]);

        rows.Add(column);
    }
    render.close();
}
您已经执行了两个while循环,但是在关闭名为render的SqlDataReader时,在内部执行了两个while循环

当您尝试在外部文件中再次读取时,这可能会引发异常,从而产生循环效果


移动ReReal.Cutin在外部结束时关闭,并考虑在一个循环中减少代码

,可以声明字符串变量以在循环期间保持值。 一旦完成,在每个foreach过程中,只需使用“,”获取值(&concat)。。为了避免性能问题,只需附加到现有字符串之后,请使用StringBuilder

例如:


您可以声明字符串变量以在循环期间保存该值。 一旦完成,在每个foreach过程中,只需使用“,”获取值(&concat)。。为了避免性能问题,只需附加到现有字符串之后,请使用StringBuilder

例如:


这可能对你有用

SqlDataReader render = cmd.ExecuteReader();
List<string> IdList = new List<string>();
List<string> First4List = new List<string>();
List<string> Last4List = new List<string>();
List<string> ReasonList = new List<string>();
while (render.Read())
{
    IdList.Add(render["id"].ToString());
    First4List.Add(render["first4"].ToString());
    Last4List.Add(render["last4"].ToString());
    ReasonList.Add(render["reason"].ToString());
}
render.close();
string idstr = string.Join(",", IdList);
string first4str = string.Join(",", First4List);
string last4str = string.Join(",", Last4List);
string reasonstr = string.Join(",", ReasonList);
尝试使用for SQL连接和命令。这将帮助您摆脱最后一个阻塞,并关闭连接和命令

代码一瞥

创建字符串列表,即所有四列的列表将添加从sql中读取的所有数据

然后在一个循环中正常读取数据,并分别添加列表中的所有数据


一旦数据被读取并输入到列表中,然后使用join将它们连接起来。

这可能会对您有所帮助

SqlDataReader render = cmd.ExecuteReader();
List<string> IdList = new List<string>();
List<string> First4List = new List<string>();
List<string> Last4List = new List<string>();
List<string> ReasonList = new List<string>();
while (render.Read())
{
    IdList.Add(render["id"].ToString());
    First4List.Add(render["first4"].ToString());
    Last4List.Add(render["last4"].ToString());
    ReasonList.Add(render["reason"].ToString());
}
render.close();
string idstr = string.Join(",", IdList);
string first4str = string.Join(",", First4List);
string last4str = string.Join(",", Last4List);
string reasonstr = string.Join(",", ReasonList);
尝试使用for SQL连接和命令。这将帮助您摆脱最后一个阻塞,并关闭连接和命令

代码一瞥

创建字符串列表,即所有四列的列表将添加从sql中读取的所有数据

然后在一个循环中正常读取数据,并分别添加列表中的所有数据


一旦数据被读取并输入到列表中,就可以使用join将它们连接起来。

您能指定什么是交换以及它的下载黑名单吗?从上面的示例来看,您似乎只是在覆盖位于DownloadBlacklist中的变量。@TaTranskyMed保存了另一个cs文件,我希望将数据传输到我喜欢的不同cs文件中。老实说,如果代码规范/信息是字符串、列表或二元数。。。这是遗漏的,你能指定什么是交换和下载黑名单吗?从上面的示例来看,您似乎只是在覆盖位于DownloadBlacklist中的变量。@TaTranskyMed保存了另一个cs文件,我希望将数据传输到我喜欢的不同cs文件中。老实说,如果代码规范/信息是字符串、列表或二元数。。。这是遗漏的。对不起,我打错了。但是没有编译错误。只是我想知道如何实现我的目标。请添加一个try catch,并检查在读取渲染后是否进入catch分支。在第一次渲染后读取。close@user3165474如果您发布的代码中有输入错误,请更正。这样我们就不会试图去修复那个些并没有真正坏掉的东西。很抱歉我把它打错了。但是没有编译错误。只是我想知道如何实现我的目标。请添加一个try catch,并检查在读取渲染后是否进入catch分支。在第一次渲染后读取。close@user3165474如果您发布的代码中有输入错误,请更正。这样我们就不会试图修复那些没有真正损坏的东西。无法从“object”转换为“string”@user3165474,然后添加一个.ToString来呈现[id]etc.IdList.Addrender[id]。ToString;原因无法从“方法组”转换为“字符串”。ToString应为.ToString@user3165474。无法从“对象”转换为“字符串”@user3165474,然后添加.ToString以呈现[id]etc.IdList.Addrender[id]。ToString;原因无法从“方法组”转换为“字符串”。ToString应为.ToString@user3165474。
SqlDataReader render = cmd.ExecuteReader();
List<string> IdList = new List<string>();
List<string> First4List = new List<string>();
List<string> Last4List = new List<string>();
List<string> ReasonList = new List<string>();
while (render.Read())
{
    IdList.Add(render["id"].ToString());
    First4List.Add(render["first4"].ToString());
    Last4List.Add(render["last4"].ToString());
    ReasonList.Add(render["reason"].ToString());
}
render.close();
string idstr = string.Join(",", IdList);
string first4str = string.Join(",", First4List);
string last4str = string.Join(",", Last4List);
string reasonstr = string.Join(",", ReasonList);