19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.database.sqlite; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori/** 20bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori * This error can occur if the application creates a SQLiteStatement object and allows multiple 21bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori * threads in the application use it at the same time. 22bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori * Sqlite returns this error if bind and execute methods on this object occur at the same time 23bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori * from multiple threads, like so: 24bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori * thread # 1: in execute() method of the SQLiteStatement object 25bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori * while thread # 2: is in bind..() on the same object. 26bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori *</p> 27bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori * FIX this by NEVER sharing the same SQLiteStatement object between threads. 28bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori * Create a local instance of the SQLiteStatement whenever it is needed, use it and close it ASAP. 29bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori * NEVER make it globally available. 30bfe1dc27944c80dcb81f0eb313987999ecd7b6faVasu Nori */ 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class SQLiteMisuseException extends SQLiteException { 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public SQLiteMisuseException() {} 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public SQLiteMisuseException(String error) { 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(error); 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 38