Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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# C-SqlDataAdapter无论如何都不会填充DataTable_C#_Sql Server_Datatable - Fatal编程技术网

C# C-SqlDataAdapter无论如何都不会填充DataTable

C# C-SqlDataAdapter无论如何都不会填充DataTable,c#,sql-server,datatable,C#,Sql Server,Datatable,所以我试图用MSSQL查询中的数据填充DataTable,但由于某些原因,它完全无法工作,这让我非常恼火 当我使用SqlDataReader遍历结果并读取时,我会得到结果,甚至当我尝试用SqlDataAdapter填充DataTable时,查询会出现在SQL分析器上,但不会返回任何数据 我不知道是什么占据了我的代码,但也许你能找到它: try { // Global variables

所以我试图用MSSQL查询中的数据填充DataTable,但由于某些原因,它完全无法工作,这让我非常恼火

当我使用SqlDataReader遍历结果并读取时,我会得到结果,甚至当我尝试用SqlDataAdapter填充DataTable时,查询会出现在SQL分析器上,但不会返回任何数据

我不知道是什么占据了我的代码,但也许你能找到它:

            try
            {
                // Global variables
                var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
                var textString = "Pasākums {0} sākas pēc {1}!";
                var linkString = @"/Event/Index/{0}";

                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    // Set variables
                    var findIn24HrsEventsCmd = new SqlCommand(@"
                        SELECT adm.UserID, adm.EventID FROM [dbo].[EventAdmissions] AS adm WHERE EventID IN
                        (
                        SELECT EventID FROM [dbo].[Events]
                        WHERE DATEDIFF(hour, @date, StartTime) BETWEEN 0 AND 24
                        )
                        AND 
                        (
                        SELECT COUNT(URL) FROM [dbo].[Notifications]
                        WHERE Type = 1 AND UserID = adm.UserID
                        AND URL LIKE '/Event/Index/'+CAST(adm.EventID AS VARCHAR(36))
                        ) = 0", conn);
                    findIn24HrsEventsCmd.Parameters.Add(new SqlParameter("date", "2015-05-31 02:17:28.727"));

                    var test = new SqlCommand(@"SELECT * FROM [dbo].[EventAdmissions]", conn);

                    var findIn1HrEventsCmd = new SqlCommand(@"
                        SELECT adm.UserID, adm.EventID FROM [dbo].[EventAdmissions] AS adm WHERE EventID IN
                        (
                        SELECT EventID FROM [dbo].[Events]
                        WHERE DATEDIFF(minute, @date, StartTime) BETWEEN 0 AND 60
                        )
                        AND 
                        (
                        SELECT COUNT(URL) FROM [dbo].[Notifications]
                        WHERE Type = 1 AND UserID = adm.UserID
                        AND URL LIKE '/Event/Index/'+CAST(adm.EventID AS VARCHAR(36))
                        ) < 2", conn);
                    findIn1HrEventsCmd.Parameters.Add(new SqlParameter("date", "2015-05-31 02:17:28.727"));
                    var t = findIn1HrEventsCmd.CommandTimeout;

                    // Retrieve data
                    conn.Open();
                    log.Debug("Starting with the events that are on in an hour.");

                    // Do it first for evens within an hour
                    var oneHrDataAdapter = new SqlDataAdapter(test);
                    var oneHrDt = new DataTable();

                    oneHrDataAdapter.Fill(oneHrDt);

                    findIn1HrEventsCmd.Dispose();
                    findIn24HrsEventsCmd.Dispose();
                    oneHrDataAdapter.Dispose();
                }
            } catch (Exception e)
            {
                log.Fatal("Fatal error!" + e.Message);
            }
请注意,我是如何将复杂查询替换为一个非常简单的测试查询的,该查询肯定会在ManagementStudio和DataReader中返回结果,但由于某些原因无法使用DataTable。请注意,它没有超时,服务器位于同一台机器上,查询最多运行1-2秒


连接是有效的,因为正如我在前面提到的那样,DataReader方法是有效的,并且没有抛出异常。

该死的,我从来没有检查过DataTable的Rows属性,结果证明它是有效的


我认为不是,因为在调试模式下,Visual Studio非常容易引起误解,因为当您将鼠标悬停在datatable变量上时,它只显示{},这通常意味着该对象为空。

您是否收到任何错误?不,我没有收到任何错误。请在数据库引擎中运行您的查询。您的查询可能未从数据库返回任何数据,或者您的数据库表可能未针对您的查询返回数据。我不经常使用这个数据适配器,我也被钉死了。实际是什么!?这不仅仅是欺骗,这是犯罪。哇。。。只是哇。。。我在这个问题上浪费了好几天时间。谢谢你的解决方案!