如果您想了解android.database.sqlite.SQLiteException:没有这样的表:server_preferences和代码1的知识,那么本篇文章将是您的不二之选。我们将深入剖
如果您想了解android.database.sqlite.SQLiteException:没有这样的表:server_preferences和代码1的知识,那么本篇文章将是您的不二之选。我们将深入剖析android.database.sqlite.SQLiteException:没有这样的表:server_preferences的各个方面,并为您解答代码1的疑在这篇文章中,我们将为您介绍android.database.sqlite.SQLiteException:没有这样的表:server_preferences的相关知识,同时也会详细的解释代码1的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- android.database.sqlite.SQLiteException:没有这样的表:server_preferences(代码1)(没有有效的sql server 2012功能来执行此操作)
- Android SQLite – openOrCreateDatabase()nullPointerException
- Android SQLite数据库SQLiteDatabaseLockedException处理
- Android SQLite数据库:SQLiteDiskIOException:磁盘I / O错误(代码1802)
- Android Studio:android.database.sqlite.SQLiteException:无此类列:正在准备(代码1):
android.database.sqlite.SQLiteException:没有这样的表:server_preferences(代码1)(没有有效的sql server 2012功能来执行此操作)
如何解决android.database.sqlite.SQLiteException:没有这样的表:server_preferences(代码1)?
我正在 Playstore 上传我的应用程序,此错误来自预发布报告。以下是完整的堆栈跟踪:
致命异常:后台任务 android.database.sqlite.sqliteException: no such table: server_preferences (code 1): ,编译时:SELECT * FROM server_preferences WHERE (name = ?) 在 android.database.sqlite.sqliteConnection.nativePrepareStatement(本机方法) 在 android.database.sqlite.sqliteConnection.acquirePreparedStatement(sqliteConnection.java:1118) 在 android.database.sqlite.sqliteConnection.prepare(sqliteConnection.java:691) 在 android.database.sqlite.sqliteSession.prepare(sqliteSession.java:588) 在 android.database.sqlite.sqliteProgram.(sqliteProgram.java:58) 在 android.database.sqlite.sqliteQuery.(sqliteQuery.java:37) 在 android.database.sqlite.sqliteDirectCursorDriver.query(sqliteDirectCursorDriver.java:44) 在 android.database.sqlite.sqliteDatabase.rawQueryWithFactory(sqliteDatabase.java:1436) 在 android.database.sqlite.sqliteQueryBuilder.query(sqliteQueryBuilder.java:400) 在 android.database.sqlite.sqliteQueryBuilder.query(sqliteQueryBuilder.java:294) 在 com.google.android.gm.provider.MailEngine.getServerPrefsCursor(MailEngine.java:1462) 在 com.google.android.gm.provider.MailEngine.getCursorForReplyFromDefaultAddress(MailEngine.java:1466) 在 com.google.android.gm.provider.MailEngine.notifyInitializationComplete(MailEngine.java:1371) 在 com.google.android.gm.provider.MailEngine.access$1900(MailEngine.java:135) 在 com.google.android.gm.provider.MailEngine$5.run(MailEngine.java:1291) 在 android.os.Handler.handleCallback(Handler.java:730) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper.loop(Looper.java:176) 在 android.os.HandlerThread.run(HandlerThread.java:61)
我在应用程序中没有名为 server_preference 的表。 请让我知道可以为此做些什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Android SQLite – openOrCreateDatabase()nullPointerException
我有以下DBAdapter(这不是全部,但它是相关的代码).
private final String DATABASE_NAME = "seller";
private final String DATABASE_MY_TABLE = "sellertable";
private final Integer DATABASE_VERSION = 1
private final String CREATE_TABLE = "CREATE TABLE seller ........";
public DBAdapter( Context c )
{
this.context = c;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends sqliteOpenHelper
{
public DatabaseHelper( Context context )
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate( sqliteDatabase db )
{
MyLog.d("Creating Tables");
try
{
db.execsql(CREATE_TABLE);
}
catch (Exception e)
{
e.printstacktrace();
}
}
@Override
public void onUpgrade( sqliteDatabase db, int oldVersion, int newVersion )
{
MyLog.w("Upgrading database from version " + oldVersion + " to " + newVersion + ". Destroying old data.");
db.execsql("DROP TABLE IF EXISTS " + DATABASE_MY_TABLE);
onCreate(db);
}
}
// Opens the database
public DBAdapter open() throws sqlException
{
db = DBHelper.getWritableDatabase();
return this;
}
当我尝试db.open()时,我得到以下内容:
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate application com.company.app.MyApp: java.lang.NullPointerException
at android.app.LoadedApk.makeApplication(LoadedApk.java:466)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3260)
at android.app.ActivityThread.access$2200(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.content.Contextwrapper.openorCreateDatabase(Contextwrapper.java:203)
at android.database.sqlite.sqliteOpenHelper.getWritableDatabase(sqliteOpenHelper.java:118)
at com.company.app.DBAdapter.open(DBAdapter.java:74)
at com.company.app.MyApp.<init>(MyApp.java:106)
at java.lang.class.newInstanceImpl(Native Method)
at java.lang.class.newInstance(Class.java:1409)
at android.app.Instrumentation.newApplication(Instrumentation.java:957)
at android.app.Instrumentation.newApplication(Instrumentation.java:942)
at android.app.LoadedApk.makeApplication(LoadedApk.java:461)
它似乎得到某种异常,与帮助者决定是否创建或更新数据库有关…
解决方法:
尝试在数据库名称的末尾添加类似“.db”的扩展名.
Android SQLite数据库SQLiteDatabaseLockedException处理
Android项目中因为涉及到多线程访问数据库SQLite而出现SQLiteDatabaseLockedException异常,经过查找资料终于找到解决方法:避免数据库接口被多个线程同时访问。
具体措施有:
1、数据库接口采取单例模式
[java] view plain copy
<EMBED id=ZeroClipboardMovie_1 name=ZeroClipboardMovie_1 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer height=18 width=18 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=1&width=18&height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">
public synchronized void insert(InstallModel info) {
while (db.isDbLockedByOtherThreads() || db.isDbLockedByCurrentThread()){
Log.w(Tag, "insert === db is locked by other or current threads!");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
db.execSQL("INSERT INTO install(pkg, pay, install, inApply, flag, attributes, id, introduction, name, smallPicUrl," +
"bigPicUrl, categoryId, sourceUrl, pid, cid, built_in, applyMode) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?)",
new Object[] {"" + info.getPkg(), "" + info.getPay(), "" + info.getInstall(), "" + info.getIsApply(), "" + info.getFlag(),
"" + info.getAttributes(), "" + info.getId(), "" + info.getIntroduction(), "" + info.getName(), "" + info.getSmallPicUrl(),
"" + info.getBigPicUrl(), "" + info.getCategoryId(), "" + info.getSourceUrl(), "" + info.getPid(), "" + info.getCid(),
"" + info.getBuilt_in(), "" + info.getApplyMode()
});
}
相关资料:http://www.myexception.cn/sql/419392.html
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabaseLockedException.html
boolean android.database.sqlite.SQLiteDatabase.isDbLockedByOtherThreads();
boolean android.database.sqlite.SQLiteDatabase.isDbLockedByCurrentThread();
3、光是给接口加锁还不行,因为 synchronized 关键词只能锁定程序块,但是我们真正需要锁的是数据库,好在SQLiteDataBase提供了两个接口,用于检测数据库当时是否被锁定:
所以我们在访问之前还需要增加判断,如果数据库当前被锁定,就等待一会再去访问。
[java] view plain copy
<EMBED id=ZeroClipboardMovie_3 name=ZeroClipboardMovie_3 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer height=18 width=18 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=3&width=18&height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">
public class DBOpenHelper extends SQLiteOpenHelper {
private static final String DB_FILENAME = "llhome.db";
private static final int DB_VERSION = 1;
private static DBOpenHelper helper = null;
public static DBOpenHelper getInstance(Context context){
if (helper == null){
synchronized (DBOpenHelper.class) {
if (helper == null){
DBOpenHelper temp = new DBOpenHelper(context);
helper = temp;
}
}
}
return helper;
}
2、所有访问数据的接口用synchronized加锁:
[java] view plain copy
<EMBED id=ZeroClipboardMovie_2 name=ZeroClipboardMovie_2 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer height=18 width=18 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=2&width=18&height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">
Android SQLite数据库:SQLiteDiskIOException:磁盘I / O错误(代码1802)
我在应用程序启动时创建了数据库,调用了RSSDatabase的构造函数,工作正常.单击一个按钮后,我从RSS提要中获取数据并在AsyncTask中插入数据,但是当我调用db.insert(“posts”,“”,values)时会导致错误,这是logcat的错误消息:
02-04 21:43:22.050 19154-19357/com.example.aolreader E/sqliteLog﹕ (1802) os_unix.c:30026: (2) stat(/data/data/com.example.aolreader/databases/RSS_db) - 02-04 21:43:22.050 19154-19357/com.example.aolreader E/sqliteLog﹕ (1802) statement aborts at 13: [INSERT INTO posts(author,title,date,description,link) VALUES (?,?,?)] 02-04 21:43:22.050 19154-19357/com.example.aolreader E/sqliteDatabase﹕ Error inserting author=AP title=UK admits ‘limited’ role in Operation Blue Star date=Tue,4 Feb 2014 19:03:27 +0530 description= The British government had recently ordered an urgent investigation into possible U.K. involvement in the raid. link=http://www.thehindu.com/news/international/world/uk-admits-limited-role-in-operation-blue-star/article5653316.ece android.database.sqlite.sqlitediskIOException: disk I/O error (code 1802) at android.database.sqlite.sqliteConnection.nativeExecuteForLastInsertedRowId(Native Method) at android.database.sqlite.sqliteConnection.executeForLastInsertedRowId(sqliteConnection.java:782) at android.database.sqlite.sqliteSession.executeForLastInsertedRowId(sqliteSession.java:788) at android.database.sqlite.sqliteStatement.executeInsert(sqliteStatement.java:86) at android.database.sqlite.sqliteDatabase.insertWithOnConflict(sqliteDatabase.java:1469) at android.database.sqlite.sqliteDatabase.insert(sqliteDatabase.java:1339) at com.example.aolreader.RSSDatabase.insertPost(RSSDatabase.java:44) at com.example.aolreader.XMLRSSActivity.parseNews(XMLRSSActivity.java:386) at com.example.aolreader.XMLRSSActivity.access$000(XMLRSSActivity.java:33) at com.example.aolreader.XMLRSSActivity$ParseTask.doInBackground(XMLRSSActivity.java:171) at com.example.aolreader.XMLRSSActivity$ParseTask.doInBackground(XMLRSSActivity.java:134) at android.os.AsyncTask$2.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841)
我搜索了这个错误,发现它可能是由同一时间访问数据库的不同线程引起的,但我查看了我的代码,发现没有多线程有竞争条件的情况.
这是我的数据库助手类:
class RSSDatabaseHelper extends sqliteOpenHelper { private static final String createPostTablesql = "create table posts (" + "_id integer primary key autoincrement," + "title varchar," + "author varchar," + "link varchar," + "description varchar," + "date varchar)"; private Context context; public RSSDatabaseHelper(Context c,String name,sqliteDatabase.CursorFactory factory,int version) { super(c,name,factory,version); context = c; } @Override public void onCreate(sqliteDatabase db) { db.execsql(createPostTablesql); } @Override public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { db.execsql("drop table if exists posts"); onCreate(db); } }
我的数据库类:
public class RSSDatabase { private static RSSDatabase instance; private sqliteDatabase db; private RSSDatabaseHelper dbHelper; private RSSDatabase(Context c) { dbHelper = new RSSDatabaseHelper(c,"RSS_db",null,1); db = dbHelper.getWritableDatabase(); } public static synchronized RSSDatabase getDatabaseInstance(Context c) { if (instance == null) { instance = new RSSDatabase(c); } return instance; } public void insertPost(Post post) { ContentValues values = new ContentValues(); values.put("title",post.title); values.put("author",post.author); values.put("link",post.link); values.put("description",post.description); values.put("date",post.date); db.insert("posts","",values); } }
谁能解释一下这个问题呢?
提前致谢!
解决方法
db = dbHelper.getWritableDatabase(); // In the constructor
现在从Async任务(不同的线程),您正在尝试在由UI线程锁定的数据库中插入数据.这将引发异常,因为第一次写入对db有锁定.
Android Studio:android.database.sqlite.SQLiteException:无此类列:正在准备(代码1):
如何解决Android Studio:android.database.sqlite.SQLiteException:无此类列:正在准备(代码1):?
我必须根据状态获取数据,并将其放入适当的Recycler View。我尝试说的任何内容都没有列或存在无法识别的标记。老实说,我不知道出什么问题了,请帮助! 订单合同 `public ArrayList getorderListByStatus(long vendorId,String status){ 打开(); ArrayListordersList = new ArrayList();
Cursor cursor = mDb.query(OrdersEntry.TABLE_NAME,mAllColumns,OrdersEntry.COL_vendOR_ID + " =? AND " + OrdersEntry.COL_STATUS + "=" + status,new String[]{String.valueOf(vendorId)},null,null);
if (cursor != null) {
cursor.movetoFirst();
while (!cursor.isAfterLast()) {
Order order = cursorToOrder(cursor,cursor.getLong(cursor.getColumnIndex(OrdersEntry.COL_CUSTOMER_ID)),vendorId);
ordersList.add(order);
if (cursor.isLast() || cursor.isClosed())
break;
else
cursor.movetoNext();
}
}
cursor.close();
mDb.close();
close();
return ordersList;
}
OrdersFragment
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_orders,container,false);
sharedPref = getActivity().getSharedPreferences("KeyData",Context.MODE_PRIVATE);
//first recycler
pendingRecyclerView = v.findViewById(R.id.pendingRecycler);
pendingRecyclerView.setHasFixedSize(true);
mLayoutManager = new linearlayoutmanager(getContext()); //use linear layout on cards
pendingRecyclerView.setLayoutManager(mLayoutManager);
pendingOrderAdapter = new OrderAdapter(getContext(),this);
pendingOrderAdapter.submitList(getorderList("Preparing"));
recyclerAdapter = pendingOrderAdapter;//specify adapter and pass in item list
pendingRecyclerView.setAdapter(recyclerAdapter);
//second recycler
completedRecyclerView = v.findViewById(R.id.completedRecycler);
completedRecyclerView.setHasFixedSize(true);
mLayoutManager2 = new linearlayoutmanager(getContext());
completedRecyclerView.setLayoutManager(mLayoutManager2);
CompletedOrderAdapter = new OrderAdapter(getContext(),this);
CompletedOrderAdapter.submitList(getorderList("Completed"));
recyclerAdapter2 = CompletedOrderAdapter;
completedRecyclerView.setAdapter(recyclerAdapter2);
return v;
}
//need two arrayList,orderPending and orderComplete
//get order list from order database
public ArrayList<Order> getorderList(String status) {
String email = sharedPref.getString("Email","");
vendorsContract vc = new vendorsContract(getContext());
OrdersContract oc = new OrdersContract(getContext());
vendor vendor = vc.getvendorIdByEmail(email);
Order order = oc.getorderById(vendor.getM_Id());
order.getM_Status();
switch (status)
{
case "Preparing":
pendingOrderList = oc.getorderListByStatus(vendor.getM_Id(),status);
return pendingOrderList;
case "Completed":
completedOrderList = oc.getorderListByStatus(vendor.getM_Id(),status);
return completedOrderList;
}
return null;
}
Error Message
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
关于android.database.sqlite.SQLiteException:没有这样的表:server_preferences和代码1的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android SQLite – openOrCreateDatabase()nullPointerException、Android SQLite数据库SQLiteDatabaseLockedException处理、Android SQLite数据库:SQLiteDiskIOException:磁盘I / O错误(代码1802)、Android Studio:android.database.sqlite.SQLiteException:无此类列:正在准备(代码1):等相关内容,可以在本站寻找。
本文标签: