从在线托管的mysql数据库中检索数据的最快方法是什么?

时间:2018-11-12 18:41:07

标签: java android-studio sqlite android-sqlite

我当前正在构建一个将数据存储在远程数据库中的android应用,我想将数据检索到该应用,但这需要一段时间。因此,我想知道将数据检索到Android的最佳方式(Sqlite是否会提高应用程序的性能?)。

1 个答案:

答案 0 :(得分:0)

您经常调用方法GetDataFromDB(string query)。这很不好,因为您每次都创建一个新的SqlConnection和SqlCommand。这需要时间和资源。同样,如果有任何网络延迟,则将其乘以您正在拨打的电话数。所以这是一个坏主意。

我建议您一次调用该方法,并将其填充到字典(Dictionary)之类的集合中,以便您可以从用户ID键快速查找Username值。

赞:

// In the DataField class, have this code.
// This method will query the database for all usernames and user ids and
// return a Dictionary<int, string> where the key is the Id and the value is the 
// username. Make this a global variable within the DataField class.
Dictionary<int, string> usernameDict = GetDataFromDB("select id, username from Users");

// Then in the GetValue(int userId) method, do this:
public string GetValue(int userId)
{
    // Add some error handling and whatnot. 
    // And a better name for this method is GetUsername(int userId)
    return this.usernameDict[userId];
}

建议2 这是您可以改进的另一种方法,尽管在这种情况下稍有改进-使用StringBuilder类。性能显着提高(这里是概述:http://support.microsoft.com/kb/306822)。

SringBuilder sb = new StringBuilder();
sb.Append("<table><tr><th>Username</th>");
foreach (DataField f in fields)
{
    sb.Append("<th>" + f.Name + "</th>");
}

// Then, when you need the string
string html = sb.ToString();