【发布时间】:2014-02-03 14:37:17
【问题描述】:
目前,在我的应用程序中,我目前有一个 SQLite 数据库,用于存储需要最终发送到数据库或稍后在应用程序中调用(或两者兼有)的相关信息。这是使用 SQLiteOpenHelper 类以传统方式完成的:
public class SQLiteHelper extends SQLiteOpenHelper {
// define constants to store names of each table and each field name
// Tables
public static final String TABLE_VISIT_DETAILS = "VisitDetails";
...
private static final String DATABASE_NAME = "Projects.db";
private static final int DATABASE_VERSION = 41;
// Database table creation sql statements, SQLite requires tables to be
// created in separate statements
private static final String CREATE_TABLE_VISIT_DETAILS = "create table "
+ TABLE_VISIT_DETAILS + "(" + COLUMN_ID
+ " integer primary key autoincrement, " + COLUMN_PROJECT_NUMBER
+ " text not null, " + COLUMN_SITE_VISIT_ID + " integer, "
+ COLUMN_SCHEDULED_START_TIME + " integer, "
+ COLUMN_SCHEDULED_END_TIME + " integer, " + COLUMN_POSTCODE
+ " text, " + COLUMN_SUBMITTED + " text, " + COLUMN_SITE_NAME
+ " text, " + COLUMN_SITE_ADDRESS + " text, " + COLUMN_PROJECT_TYPE
+ " text, " + COLUMN_CLIENT + " text, "
+ COLUMN_REINSPECTION_PROJECT + " text, " + COLUMN_VISIT_NUMBER
+ " integer);";
...
etc
我只是非常简单地存储对象。之前,我使用 JSONObject 和 JSONArray 向服务器发送 JSON 请求,但现在我已将其更改为 Gson,以便更轻松地使用序列化,并且需要使用 put 方法将每个属性放入 json 对象中。
我在我的服务器上设置了一个 API,它等待这些 json 对象然后解析,例如:
[WebInvoke(UriTemplate = "UploadSurveyData/{token}", Method = "POST", ResponseFormat = WebMessageFormat.Json)]
public List<UploadProjectContainerResult> UploadSurveyData(string token, UploadProjectContainer data)
{
List<UploadProjectContainerResult> results = new List<UploadProjectContainerResult>();
MobileAssessorAuthenticationResults authResult = ValidateToken(new Guid(token));
SqlCommand command = null;
SqlDataReader reader = null;
if (authResult == MobileAssessorAuthenticationResults.Success)
{
results.Add(uploadQuestionnaireResponse(token, data.questionnaireResponses));
results.Add(uploadBuildings(token, data.buildings));
results.Add(uploadFloors(token,data.floors ));
results.Add(uploadLocations(token, data.locations));
String projectDir = "";
command = new SqlCommand("[dbo].[GetProjectDir]", _connector.Connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Parameters.AddWithValue("@projectNo", data.siteInfo.projectNo);
reader = command.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
projectDir = reader.GetString(0);
}
results.Add(uploadSiteInfo(token, data.siteInfo, projectDir));
results.Add(uploadSubmission(token,data.submission, projectDir, data.scheduleId));
}
return results;
}
它创建一个容器的对象,然后遍历容器中的每个事物,并在 SQL 数据库中运行一个存储过程,将它们添加到数据库中,并为每个事物返回一个结果(无论成功与否)。然后,它返回一个包含这些结果的数组,并告诉应用程序每个结果都向用户指示它们是否成功。
添加新内容,甚至使用此系统更改内容非常烦人,因为它必须在多个地方进行更改。
我想知道是否有什么我可以实现的东西来让这件事变得更简单、更快捷,或者是否有多余的东西可以被其他东西代替。
总的来说,我只是想为这个和未来的项目减少整个过程。我不介意从头开始,如果只是为了以后提高生产力。
我使用带有 .NET 框架的 C# 作为我的 Web 服务 API,使用 SQL Server 10.50.1600 作为我的 SQL 数据库,使用带有 2.3.3 的 android 作为我的设备的最低平台,所以这些是我的限制,并且是不灵活改变。当然,如果它们兼容,任何外部库都是受欢迎的。
如果您希望我包含更多我的代码,请随时提出。它将成为我工作的公司的商业代码,所以我不能透露整个来源,但我愿意尽可能多地展示(如果有意义的话)。
非常感谢您阅读和帮助我!
*编辑:*凹凸。
【问题讨论】:
标签: c# android sql sql-server json