C# 从SQL获取数据并将其放入列表/访问另一个类而不使用Static?

C# 从SQL获取数据并将其放入列表/访问另一个类而不使用Static?,c#,sql,list,C#,Sql,List,我在Unity中使用SQLite试图显示数据库中的一些信息 但我有一些问题,我不知道缺少什么来让它工作 public class City // List { public int vID { get; set; } public string vName{ get; set; } } 及 公共课堂培训:单一行为{ 公共列表LoadCity() { var listOfCity=新列表(); string conn=“URI=file:“+Application.dataP

我在Unity中使用SQLite试图显示数据库中的一些信息

但我有一些问题,我不知道缺少什么来让它工作

public class City // List
{
    public  int vID { get; set; }
    public  string vName{ get; set; }
}

公共课堂培训:单一行为{
公共列表LoadCity()
{
var listOfCity=新列表();
string conn=“URI=file:“+Application.dataPath+”/DataBase/db_01.s3db”;
IDBConn;
dbconn=(IDbConnection)新SqliteConnection(conn);
dbconn.Open();
IDbCommand dbcmd=dbconn.CreateCommand();
string sqlQuery=“从区域中选择r\U id、r\U名称”+”;
dbcmd.CommandText=sqlQuery;
IDataReader reader=dbcmd.ExecuteReader();
while(reader.Read())
{
var city=新城();
city.vID=Convert.ToInt32(读卡器[“r_id]”);
city.vName=reader[“r_name”].ToString();
城市列表。添加(城市);
}
reader.Close();
reader=null;
dbcmd.Dispose();
dbcmd=null;
dbconn.Close();
dbconn=null;
回归城市;
}
void OnGUI()
{ 
对于(int ai=0;ai
为什么在void GUI中我不能调用City.vName

谢谢你的帮助。

试试这个:

void OnGUI()
{

    int ai = 0;
    foreach(var city in LoadCity())
    {
        GUI.Button(new Rect (25, 50+(ai+1)*35, 210, 30),(city.vName));
        Debug.Log(city.vName);
        ai++;
    }
}
var listOfCity =LoadCity();
foreach (var city in listOfCity)
{
    GUI.Button(new Rect (25, 50+(ai+1)*35, 210, 30),(city.vName));
    Debug.Log(city.vName);

}    
如果有任何问题,请告诉我。

在您的OnGui()函数中,您可以将所有数据加载到列表中,然后进行检查。然后,当你提到城市时,你并没有指明一个特定的对象,只是指一个类名。因此,您需要指示特定对象以获取其值。 试试这个:

var listOfCity =LoadCity();
foreach (var city in listOfCity)
{
    GUI.Button(new Rect (25, 50+(ai+1)*35, 210, 30),(city.vName));
    Debug.Log(city.vName);

}    

}由于City.vName不是静态成员,因此您无法访问它,请尝试使用以下代码在类中使vName为静态:

    public class City // List
    {
        public  int vID { get; set; }
        public  static string vName{ get; set; }
    }

事实上,您可以在不调用City.vName的情况下完成这项工作。在您的例子中,您可以从LoadCity()函数捕获列表,然后使用
listOfCity.vName[ai]

从该列表中迭代访问vName,我只需添加一个var
foreach(LoadCity()中的var city)
也感谢这项工作<代码>var listOfCity=LoadCity()
then
listOfCity[ai].vName
我认为这个答案比另一个好。也就是说,谢谢大家的帮助;)尽管如此,两个答案都是有效的,而且都有效——也许你应该把它们都标上?我会的,但我不能,也许我在董事会上太新了。(但你得到了我的支持):)vName是字符串而不是数组