如何从两个不同的活动中保存和获取 SQLite 中的数据?
Posted
技术标签:
【中文标题】如何从两个不同的活动中保存和获取 SQLite 中的数据?【英文标题】:How save and get data in SQLite from two differen activity? 【发布时间】:2011-06-04 17:19:00 【问题描述】:当我的应用程序启动时,我从服务器获取票证,用于对服务器进行签名响应。这张票(字符串)我保存在数据库中,当我运行新响应时,我从数据库中获取这张票并附加到响应中。当我从保存票证的同一活动中运行响应时,一切都很好。我的意思是,当我保存票证时,我还会发布活动上下文,我正在使用数据库执行此操作。但是,当我在一个活动中保存票证,启动另一个活动并尝试在第二个活动中从数据库中获取票证时,我得到空值(行不包含项目)。那么,谁能告诉我,我错在哪里了?
感谢您的帮助。谢谢。
这里代码:
public long setTicket(Ticket ticket) throws SQLException
ContentValues insertValues = new ContentValues();
insertValues.put(TicketTable.KEY_TICKET, ticket.getTicket());
insertValues.put(TicketTable.KEY_RESULT_CODE, ticket.getResultCode());
long result = m_db.insert(DATABASE_TABLE_TICKET, null, insertValues);
return result;
public Ticket getTicket() throws SQLException
String[] columns = TicketTable.KEY_ID, TicketTable.KEY_TICKET,
TicketTable.KEY_RESULT_CODE ;
Cursor cursor = getCursor(DATABASE_TABLE_TICKET, columns);
Ticket result = new Ticket();
result.setTicket(cursor.getString(TicketTable.TICKET_COLUMN));
result.setResultCode(cursor.getString(TicketTable.RESULT_CODE_COLUMN));
cursor.close();
return result;
这里我设置访问数据库的方法:
public String getTicket()
DBAdapter adapter = new DBAdapter(m_context);
adapter.open();
String ticketEncoded = null;
Ticket ticket = null;
try
ticket = adapter.getTicket();
ticketEncoded = java.net.URLEncoder.encode(ticket.getTicket());
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
finally
adapter.close();
return ticketEncoded;
public void saveTicketFromServer()
GetTicketHandler handler = new GetTicketHandler(m_context);
Ticket ticket = new Ticket();
ticket.setCommand("getTicket");
TicketTask task = new TicketTask(ticket);
createTask(task, handler);
在这里,我发现票证为空:
String comment = java.net.URLEncoder.encode(strToEncode, "UTF-8");
String barcodeId = "4605246006340";
String ball = "10";
String sign = account.getTicket();//here!
CreateCommentTask task = new CreateCommentTask(barcodeId, ball,
comment, sign);
//TODO create handler
HttpService httpService = new HttpService();
httpService.createTask(task, null);
但在另一个回应中一切都很好:
String sign = account.getTicket();
try
task = new SearchBarcodeTask(searchForm, sign);
catch (NoSuchAlgorithmException e)
// TODO Auto-generated catch block
e.printStackTrace();
SearchBarcodeHandler handler = new SearchBarcodeHandler(m_activity);
HttpService httpService = new HttpService();
httpService.createTask(task, handler);
【问题讨论】:
发布您的代码和错误日志。 【参考方案1】:好吧,我看到的问题是String sign = account.getTicket();//here!
帐户必须为空。因此,请检查您提到的其他两个方法调用之间的不同之处。无论帐户是什么,您都在做不同的事情。
【讨论】:
不,不,帐户实例不为空。当我尝试取票时出现问题。在我把票放在桌子上之前,当我拿到另一个回复时,一切都好。但是当我尝试获取此响应的票时,应该票的表不包含任何行。 发布您的堆栈跟踪,以便我自己查看错误是什么。以上是关于如何从两个不同的活动中保存和获取 SQLite 中的数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何从列表视图中从 sqlite 检索数据单击并查看不同的活动 android studio
从 2 个不同片段的 sqlite 中的 2 个表中获取信息