C# sqlite 查询
c# sqlite query
C# SQLite 查询
String sql = @"SELECT user FROM '" + channel + "' ORDER BY currency DESC LIMIT 10";
您的查询有问题。 SELECT 仅从变量 channel
表示的 table 中提取一列。因此 reader 循环中的 GetString(1)
失败,因为索引 1 处没有字段(数组从索引零开始)。您需要更改该 GetString 索引。
那么return值就有问题了。你说你想要 return 一个单一的字符串但是没有 return 语句并且你没有任何单一的字符串 return
你可以写
public string top10()
{
List<string> toplist = new List<string>();
String sql = "SELECT user FROM '" + channel + "' ORDER BY currency DESC LIMIT 10";
using (cmd = new SQLiteCommand(sql, myDB))
{
using (SQLiteDataReader r = cmd.ExecuteReader())
{
while (r.Read())
{
toplist.Add(r.GetString(0));
}
}
}
return string.Join(",", toplist);
}
或者把方法的return类型改成
public List<string> top10()
{
.....
return toplist;
}
或到
public string[] top10()
{
.....
return toplist.ToArray();
}
我已将您的内部数组更改为 List<string>
,因为如果您的记录少于 10 条,您的数组将包含空字符串,而列表将 return 仅找到找到的行。
您也可以试试这个答案。
public string getTop10()
{
List<string> Toplist = new List<string>();
string connection = "YourConnectionString";
using (var con = new SQLiteConnection { ConnectionString = connection })
{
using (var command = new SQLiteCommand { Connection = con })
{
con.Open();
command.CommandText = @"SELECT user FROM @channel ORDER BY currency DESC LIMIT 10";
command.Parameters.AddWithValue("@channel", channel);
using (var r = command.ExecuteReader())
{
while(r.Read())
{
Toplist.Add(r.GetString(0));
}
}
}
}
return string.Join(",", Toplist);
}
C# SQLite 查询
String sql = @"SELECT user FROM '" + channel + "' ORDER BY currency DESC LIMIT 10";
您的查询有问题。 SELECT 仅从变量 channel
表示的 table 中提取一列。因此 reader 循环中的 GetString(1)
失败,因为索引 1 处没有字段(数组从索引零开始)。您需要更改该 GetString 索引。
那么return值就有问题了。你说你想要 return 一个单一的字符串但是没有 return 语句并且你没有任何单一的字符串 return
你可以写
public string top10()
{
List<string> toplist = new List<string>();
String sql = "SELECT user FROM '" + channel + "' ORDER BY currency DESC LIMIT 10";
using (cmd = new SQLiteCommand(sql, myDB))
{
using (SQLiteDataReader r = cmd.ExecuteReader())
{
while (r.Read())
{
toplist.Add(r.GetString(0));
}
}
}
return string.Join(",", toplist);
}
或者把方法的return类型改成
public List<string> top10()
{
.....
return toplist;
}
或到
public string[] top10()
{
.....
return toplist.ToArray();
}
我已将您的内部数组更改为 List<string>
,因为如果您的记录少于 10 条,您的数组将包含空字符串,而列表将 return 仅找到找到的行。
您也可以试试这个答案。
public string getTop10()
{
List<string> Toplist = new List<string>();
string connection = "YourConnectionString";
using (var con = new SQLiteConnection { ConnectionString = connection })
{
using (var command = new SQLiteCommand { Connection = con })
{
con.Open();
command.CommandText = @"SELECT user FROM @channel ORDER BY currency DESC LIMIT 10";
command.Parameters.AddWithValue("@channel", channel);
using (var r = command.ExecuteReader())
{
while(r.Read())
{
Toplist.Add(r.GetString(0));
}
}
}
}
return string.Join(",", Toplist);
}