1

调用第一个文档的内容无关紧要,始终使用此代码将其从列表中排除。我可以对数据库运行相同的选择语句并显示正确的结果。我想我只是看了太多代码而没有看到问题。

SqlConnection objConn = new SqlConnection(ConfigurationManager.ConnectionStrings["DBName"].ToString());

            objConn.Open();

            string sTSQL =
                        "SELECT [filename]      " +
                        "FROM [DB].[dbo].[secure_files] ";

            SqlCommand objCmd = new SqlCommand(sTSQL, objConn);
            objCmd.CommandType = CommandType.Text;

            SqlDataReader dr = objCmd.ExecuteReader();
            dr.Read();

            html += "<ul>";

            while (dr.Read())
            {
                html += "<li><a href=\"/secure/secureDownload.aspx?query=" + dr[0].ToString() + "\">" + dr[0].ToString() + "</a></li>";
            }
            html += "</ul>";

            objConn.Close();
4

4 回答 4

3

我想这是因为你打dr.Read();了两次电话。只需删除第一个。

于 2012-08-29T16:46:58.637 回答
0

您正在阅读一次但没有保存您阅读的内容,然后您在循环开始时再次阅读。

删除你的第一dr.Read()行。你只想在循环中阅读。

于 2012-08-29T16:47:07.490 回答
0
dr.Read();

html += "<ul>";

while (dr.Read())

您的第一个 dr.Read() 跳过了第一条记录。

于 2012-08-29T16:47:31.490 回答
0

摆脱 while 循环之外的第一个 dr.Read() 。它正在跳过第一条记录。

于 2012-08-29T16:48:09.400 回答