C# 从数据库(SQLite)填充列表

C# 从数据库(SQLite)填充列表,c#,C#,我试图用数据库SQlite上的信息填充两个列表 public class Investor // List { public int iID { get; set; } public string iName { get; set; } public string iDisplayName { get; set; } public string iArea { get; set; } } public class Area // List { publi

我试图用数据库SQlite上的信息填充两个列表

public class Investor // List
{
    public int iID { get; set; }
    public string iName { get; set; }
    public string iDisplayName { get; set; }
    public string iArea { get; set; }
}

public class Area // List
{
    public int aID { get; set; }
    public string aName { get; set; }
    public string aDisplayName { get; set; }
}

公共课堂培训:单一行为{
公开上市投资者()
{
var listOfInvestor=新列表();
string conn=“URI=file:“+Application.dataPath+”/db_01.s3db”;
IDBConn;
dbconn=(IDbConnection)新SqliteConnection(conn);
dbconn.Open();
IDbCommand dbcmd=dbconn.CreateCommand();
字符串sqlQuery=“从投资者处选择*”+;从区域中选择*“+”;
dbcmd.CommandText=sqlQuery;
IDataReader reader=dbcmd.ExecuteReader();
while(reader.Read())
{
var投资者=新投资者();
investor.iID=转换为32(读卡器[“i_id”);
investor.iName=reader[“i_name”].ToString();
investor.iDisplayName=读卡器[“i_display_name”].ToString();
investor.iArea=读卡器[“i_区域]。ToString();
投资方名单。添加(投资方);
}
reader.Close();
reader=null;
dbcmd.Dispose();
dbcmd=null;
dbconn.Close();
dbconn=null;
投资者申报表;
}
我可以得到第二个填充,但这意味着打开两次数据库并调用另一个公共列表

公共列表区域(){}

这是唯一的办法吗


或者有一种方法可以执行类似于
Public List[]LoadData()?{}

的操作,您只需在完成操作后前进到第二个结果。我还建议使用语句

var listOfInvestor = new List<Investor>();

            string conn = "URI=file:" + Application.dataPath + "/db_01.s3db";
            using (var dbConnection = (IDbConnection)new SqlLiteConnection(conn))
            using (var dbcmd = dbConnection.CreateCommand())
            {
                dbConnection.Open();

                string sqlQuery = "SELECT * " + " FROM investor; SELECT * " + " FROM Area;";
                dbcmd.CommandText = sqlQuery;
                IDataReader reader = dbcmd.ExecuteReader();

                //Read first result set
                while (reader.Read())
                {
                    var investor = new Investor();

                    investor.iID = Convert.ToInt32(reader["i_id"]);
                    investor.iName = reader["i_name"].ToString();
                    investor.iDisplayName = reader["i_display_name"].ToString();
                    investor.iArea = reader["i_area"].ToString();

                    listOfInvestor.Add(investor);
                }


                //Repeat for your other result set
                reader.NextResult();
                while (reader.Read())
                {
                    //Do areas stuff here
                }
            }
var listOfInvestor=new List();
string conn=“URI=file:“+Application.dataPath+”/db_01.s3db”;
使用(var dbConnection=(IDbConnection)新SqlLiteConnection(conn))
使用(var dbcmd=dbConnection.CreateCommand())
{
dbConnection.Open();
字符串sqlQuery=“从投资者处选择*”+;从区域中选择*“+”;
dbcmd.CommandText=sqlQuery;
IDataReader reader=dbcmd.ExecuteReader();
//读取第一个结果集
while(reader.Read())
{
var投资者=新投资者();
investor.iID=转换为32(读卡器[“i_id”);
investor.iName=reader[“i_name”].ToString();
investor.iDisplayName=读卡器[“i_display_name”].ToString();
investor.iArea=读卡器[“i_区域]。ToString();
投资方名单。添加(投资方);
}
//对其他结果集重复此操作
reader.NextResult();
while(reader.Read())
{
//你在这里做什么
}
}

以防其他人遇到问题

以下是我为解决我的问题所做的

public class Investor // List
{
public int iID { get; set; }
public string iName { get; set; }
public string iDisplayName { get; set; }
public string iArea { get; set; }
}

public class Area // List
{
public int aID { get; set; }
public string aName { get; set; }
public string aDisplayName { get; set; }
}

public class Data
{
public List<Investor> Investor { get; set; }
public List<Area> Area { get; set; }
}
public class Investor//List
{
公共整数iID{get;set;}
名称{get;set;}中的公共字符串
公共字符串iDisplayName{get;set;}
公共字符串iArea{get;set;}
}
公共类区域//列表
{
公共int-aID{get;set;}
公共字符串aName{get;set;}
公共字符串aDisplayName{get;set;}
}
公共类数据
{
公开列表投资者{get;set;}
公共列表区域{get;set;}
}
然后

public Data LoadData()
{
    var listOfInvestor = new List<Investor>();
    var listOfArea = new List<Area>();

    string conn = "URI=file:" + Application.dataPath + "/db_01.s3db";

    var dbconn  = new SqliteConnection(conn);
    var dbcmd = dbconn.CreateCommand();
    using (dbconn) 
    using (dbcmd)

    {
        dbconn.Open(); 

        string sqlQuery = "SELECT * "+" FROM investor; SELECT * "+" FROM area;";
        dbcmd.CommandText = sqlQuery;
        IDataReader reader = dbcmd.ExecuteReader();



        while(reader.Read())
        {
            var investor = new Investor();

            investor.iID = Convert.ToInt32(reader["i_id"]);
            investor.iName = reader["i_name"].ToString();
            investor.iDisplayName = reader["i_display_name"].ToString();
            investor.iArea = reader["i_area"].ToString();

            listOfInvestor.Add(investor);


        }
        reader.NextResult();
        while(reader.Read())
        {
            var area = new Area();

            area.aID = Convert.ToInt32(reader["a_id"]);
            area.aName = reader["a_name"].ToString();
            area.aDisplayName = reader["a_display_name"].ToString();

            listOfArea.Add(area);
        }

        reader.Close();
        reader = null;
        dbcmd.Dispose();
        dbcmd = null;
        dbconn.Close();
        dbconn = null;

        return new Data() {Investor = listOfInvestor, Area = listOfArea };
    }     
}
公共数据加载数据()
{
var listOfInvestor=新列表();
var listOfArea=新列表();
string conn=“URI=file:“+Application.dataPath+”/db_01.s3db”;
var dbconn=新的SqliteConnection(conn);
var dbcmd=dbconn.CreateCommand();
使用(dbconn)
使用(dbcmd)
{
dbconn.Open();
字符串sqlQuery=“从投资者处选择*”+;从区域中选择*“+”;
dbcmd.CommandText=sqlQuery;
IDataReader reader=dbcmd.ExecuteReader();
while(reader.Read())
{
var投资者=新投资者();
investor.iID=转换为32(读卡器[“i_id”);
investor.iName=reader[“i_name”].ToString();
investor.iDisplayName=读卡器[“i_display_name”].ToString();
investor.iArea=读卡器[“i_区域]。ToString();
投资方名单。添加(投资方);
}
reader.NextResult();
while(reader.Read())
{
var区域=新区域();
area.aID=Convert.ToInt32(读卡器[“a_id]”);
area.aName=reader[“a_name”].ToString();
area.aDisplayName=reader[“a_display_name”].ToString();
添加区域列表(面积);
}
reader.Close();
reader=null;
dbcmd.Dispose();
dbcmd=null;
dbconn.Close();
dbconn=null;
返回新数据(){Investor=listOfInvestor,Area=listOfArea};
}     
}
我真的不知道手动关闭连接是否更好,所以我让“关闭部分”关闭


谢谢大家的帮助;)

谢谢你的回答,但是我怎么也不能做这个区域的事情,因为它会返回到
公共投资者名单()
而不是假设的
列表区域()
这两者是如何联系在一起的。如果需要返回数据集,则需要更改返回类型。可以返回具有列表区域{get;set;}和列表区域{get;set;}属性集合的类
public Data LoadData()
{
    var listOfInvestor = new List<Investor>();
    var listOfArea = new List<Area>();

    string conn = "URI=file:" + Application.dataPath + "/db_01.s3db";

    var dbconn  = new SqliteConnection(conn);
    var dbcmd = dbconn.CreateCommand();
    using (dbconn) 
    using (dbcmd)

    {
        dbconn.Open(); 

        string sqlQuery = "SELECT * "+" FROM investor; SELECT * "+" FROM area;";
        dbcmd.CommandText = sqlQuery;
        IDataReader reader = dbcmd.ExecuteReader();



        while(reader.Read())
        {
            var investor = new Investor();

            investor.iID = Convert.ToInt32(reader["i_id"]);
            investor.iName = reader["i_name"].ToString();
            investor.iDisplayName = reader["i_display_name"].ToString();
            investor.iArea = reader["i_area"].ToString();

            listOfInvestor.Add(investor);


        }
        reader.NextResult();
        while(reader.Read())
        {
            var area = new Area();

            area.aID = Convert.ToInt32(reader["a_id"]);
            area.aName = reader["a_name"].ToString();
            area.aDisplayName = reader["a_display_name"].ToString();

            listOfArea.Add(area);
        }

        reader.Close();
        reader = null;
        dbcmd.Dispose();
        dbcmd = null;
        dbconn.Close();
        dbconn = null;

        return new Data() {Investor = listOfInvestor, Area = listOfArea };
    }     
}