Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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# Sqlite查询在C中不返回数据_C#_Sqlite Net - Fatal编程技术网

C# Sqlite查询在C中不返回数据

C# Sqlite查询在C中不返回数据,c#,sqlite-net,C#,Sqlite Net,我将Sqlite与C一起使用。当我在Sqlite浏览器中运行查询时,它会返回正确的数据,但当我从C代码中运行相同的查询时,它不会返回数据。我的C代码是: foreach (var group in groups) { var edgeDataWithGroupCmd = EdgeDatabase._connection.CreateCommand(@"SELECT ad.Id, ad.Name, adType.Id, adType.Name, h.Data, chart.URL

我将Sqlite与C一起使用。当我在Sqlite浏览器中运行查询时,它会返回正确的数据,但当我从C代码中运行相同的查询时,它不会返回数据。我的C代码是:

foreach (var group in groups)
{
        var edgeDataWithGroupCmd = EdgeDatabase._connection.CreateCommand(@"SELECT ad.Id, ad.Name, adType.Id, adType.Name, h.Data, chart.URL
                                                                                    from
                                                                                    tblAdapter ad JOIN
                                                                                    tblAdapterType adType ON ad.AdapterTypeId = adType.Id JOIN 
                                                                                    tblHealth h ON ad.HealthId = h.Id JOIN 
                                                                                    tblCharts chart ON ad.ChartId = chart.Id 
                                                                                    WHERE ad.GroupId = " + group.Id);



        List<EdgeData> edgeDatas = edgeDataWithGroupCmd.ExecuteQuery<EdgeData>();
}

您需要显示EdgeData的定义,并查询,这是Dapper提供的吗?此外,这里不需要命令,您只需将SQL作为字符串传递给该查询方法,而不使用命令对象,因此只需执行字符串SQL=@SELECT。。。;代码已经更新了一点,请您现在检查一下。还提供了EdgeData定义@LasseVågsætherkarlsensis。EdgeData类型中的属性名称和查询返回的字段名称不匹配,Dapper或您正在使用的提供查询的任何库都无法在两者之间正确映射。请尝试选择ad.Id作为AdapterId,…,或添加属性或其他可以告诉库如何正确映射的内容。具体地说,查询返回的字段是Id,而属性名称是AdapterId,或者这两个字段必须匹配,或者您需要告诉映射实现如何在这两个字段之间映射。它起到了作用:谢谢兄弟,你让我开心:@LasseVågsætherkarlse你需要展示EdgeData的定义,然后询问,这是Dapper的吗?此外,这里不需要命令,您只需将SQL作为字符串传递给该查询方法,而不使用命令对象,因此只需执行字符串SQL=@SELECT。。。;代码已经更新了一点,请您现在检查一下。还提供了EdgeData定义@LasseVågsætherkarlsensis。EdgeData类型中的属性名称和查询返回的字段名称不匹配,Dapper或您正在使用的提供查询的任何库都无法在两者之间正确映射。请尝试选择ad.Id作为AdapterId,…,或添加属性或其他可以告诉库如何正确映射的内容。具体地说,查询返回的字段是Id,而属性名称是AdapterId,或者这两个字段必须匹配,或者您需要告诉映射实现如何在这两个字段之间映射。它起到了作用:谢谢兄弟,你成就了我的一天:@LasseVågsætherKarlsenI正在使用Sqlite net@Jesse Van Evert。你的代码在那里不起作用。我正在使用Sqlite net@Jesse Van Evert。你的代码在那里不起作用。
public class EdgeData
{
    public int AdapterId { get; set; }
    public string AdapterName { get; set; }
    public int AdapterTypeId { get; set; }
    public string AdapterTypeName { get; set; }
    public bool IsConnected { get; set; }
    public int MaxRefreshRate { get; set; }
    public int AchievedRefreshRate { get; set; }
    public string ChartLink { get; set; }
}
    //get one instance, and use function in logic/business layer to create list
    //or rebuild function to return a list<EdgeData>
    public EdgeData GetEdgeData(int groupID)
    {
        connection.open();

        EdgeData edgeData;
        StringBuilder sb = new StringBuilder();

        sb.Append("SELECT ad.Id, ad.Name, adType.Id, adType.Name, h.Data, chart.URL
                    from
                    tblAdapter ad JOIN
                    tblAdapterType adType ON ad.AdapterTypeId = adType.Id JOIN 
                    tblHealth h ON ad.HealthId = h.Id JOIN 
                    tblCharts chart ON ad.ChartId = chart.Id 
                    WHERE ad.GroupId = @GroupId");


        SqlDataReader data;
        String sql = sb.ToString();
        //Use sql injection instead of "+"
        using (SqlCommand cmd = new SqlCommand(sql, connection))
        {
            cmd.Parameters.AddWithValue("@GroupId", groupID);
            data = cmd.ExecuteReader();
        }

        while (data.Read())
        {
             int AdapterId = (int)data["ad.Id"]
             string AdapterName = (string)data["ad.Name"]
             int AdapterTypeId = ...
             string AdapterTypeName = ...
             bool IsConnected = ...
             int MaxRefreshRate = ...
             int AchievedRefreshRate = ..
             string ChartLink = ..


             edgeData = new EdgeData(AdapterId, AdapterName, etc...);
        }

        connection.Close();
        return edgeData;
    }