· 8 years ago · Jul 28, 2018, 05:58 PM
1Android SQLiteException: No Such Column
2public class AreaMonitoringDB extends SQLiteOpenHelper {
3
4private static final String DEBUG_TAG = "AreaMonitoringDB";
5
6private static final String DATABASE_NAME = "AreaMonitoring.db";
7private static final int DATABASE_VERSION = 10;
8public static final String TABLE_NAME = "AreaMonitor";
9public static final String ID = "_id";
10public static final String COL_FLAG= "enable1";
11public static final String COL_FLAG2 = "enable2";
12public static final String COL_FLAG3 = "enable3";
13public static final String COL_NUMBER = "tel_number";
14
15private static final String CREATE_TABLE_AREAMONITOR = "create table "
16 + TABLE_NAME + " ("
17 + ID + " integer primary key, "
18 + COL_FLAG + " integer not null, "
19 + COL_FLAG2 + " integer not null, "
20 + COL_FLAG3 + " integer not null, "
21 + COL_NUMBER + " text );";
22
23private static final String DB_SCHEMA = CREATE_TABLE_AREAMONITOR;
24
25public AreaMonitoringDB(Context cx){
26 super(cx, DATABASE_NAME, null, DATABASE_VERSION);
27}
28
29@Override
30public void onCreate(SQLiteDatabase db) {
31 db.execSQL(DB_SCHEMA);
32 //init(db);
33}
34
35@Override
36public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
37 Log.w(DEBUG_TAG, "Upgrading database. Existing contents will be lost. ["
38 + oldVersion + "]->[" + newVersion + "]");
39 db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
40 onCreate(db);
41}
42
43}
44
45public class AreaMonitoringProvider extends ContentProvider {
46
47private static final String TAG = "AreaMonitoringProvider";
48
49private AreaMonitoringDB mDB;
50
51private static final String AUTHORITY = "com.data.AreaMonitoringProvider";
52
53private static final String BASE_PATH = "AreaMonitor";
54public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY
55 + "/" + BASE_PATH);
56
57
58
59private static final UriMatcher sURIMatcher = new UriMatcher(
60 UriMatcher.NO_MATCH);
61static {
62 sURIMatcher.addURI(AUTHORITY, BASE_PATH, 0);
63}
64
65
66
67@Override
68public boolean onCreate() {
69 mDB = new AreaMonitoringDB(getContext());
70 return true;
71}
72
73@Override
74public Cursor query(Uri uri, String[] projection, String selection,
75 String[] selectionArgs, String sortOrder) {
76 SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
77 queryBuilder.setTables(AreaMonitoringDB.TABLE_NAME);
78
79
80 Cursor cursor = queryBuilder.query(mDB.getReadableDatabase(),
81 projection, selection, selectionArgs, null, null, sortOrder);
82 cursor.setNotificationUri(getContext().getContentResolver(), uri);
83 return cursor;
84}
85
86
87@Override
88public int update(Uri uri, ContentValues values, String selection,
89 String[] selectionArgs) {
90
91 SQLiteDatabase sqlDB = mDB.getWritableDatabase();
92
93 int rowsAffected;
94
95 String id = uri.getLastPathSegment();
96 StringBuilder modSelection = new StringBuilder(AreaMonitoringDB.ID
97 + "=" + id);
98
99 if (!TextUtils.isEmpty(selection)) {
100 modSelection.append(" AND " + selection);
101 }
102
103 return rowsAffected = sqlDB.update(AreaMonitoringDB.TABLE_NAME,
104 values, modSelection.toString(), null);
105}
106
107@Override
108public int delete(Uri arg0, String arg1, String[] arg2) {
109 // TODO Auto-generated method stub
110 return 0;
111}
112
113@Override
114public String getType(Uri arg0) {
115 // TODO Auto-generated method stub
116 return null;
117}
118
119@Override
120public Uri insert(Uri arg0, ContentValues arg1) {
121 // TODO Auto-generated method stub
122 return null;
123}
124
125
126 }
127
128ContentResolver cr1 = getContentResolver();
129 ContentValues values = new ContentValues();
130 values.put(AreaMonitoringDB.COL_FLAG, flag);
131 values.put(AreaMonitoringDB.COL_NUMBER, stringArea);
132 Toast.makeText(getApplicationContext(), " "+flag+" "+stringArea, Toast.LENGTH_SHORT).show();
133 cr1.update(AreaMonitoringProvider.CONTENT_URI,
134 values,
135 AreaMonitoringDB.ID + "="+ 0,
136 null);
137 Log.e("TEST PROVIDER"," NUMBER "+ AreaMonitoringDB.COL_NUMBER);
138 Log.e("TEST PROVIDER"," ID "+ AreaMonitoringDB.ID );
139
140E/AndroidRuntime( 3831): FATAL EXCEPTION: main
141 E/AndroidRuntime( 3831): android.database.sqlite.SQLiteException: no such column
142 : AreaMonitor: , while compiling: UPDATE AreaMonitor SET enable1=?,tel_number=?
143 WHERE _id=AreaMonitor AND _id=0
144 E/AndroidRuntime( 3831): at android.database.sqlite.SQLiteCompiledSql.nat
145 ive_compile(Native Method)
146 E/AndroidRuntime( 3831): at android.database.sqlite.SQLiteCompiledSql.<in
147 it>(SQLiteCompiledSql.java:64)
148 E/AndroidRuntime( 3831): at android.database.sqlite.SQLiteProgram.compile
149 Sql(SQLiteProgram.java:146)
150 E/AndroidRuntime( 3831): at android.database.sqlite.SQLiteProgram.compile
151 AndbindAllArgs(SQLiteProgram.java:367)
152 E/AndroidRuntime( 3831): at android.database.sqlite.SQLiteStatement.acqui
153 reAndLock(SQLiteStatement.java:253)
154 E/AndroidRuntime( 3831): at android.database.sqlite.SQLiteStatement.execu
155 teUpdateDelete(SQLiteStatement.java:83)
156 E/AndroidRuntime( 3831): at android.database.sqlite.SQLiteDatabase.update
157 WithOnConflict(SQLiteDatabase.java:1829)
158 E/AndroidRuntime( 3831): at android.database.sqlite.SQLiteDatabase.update
159 (SQLiteDatabase.java:1780)
160 E/AndroidRuntime( 3831): at com.notfall.AreaMonitoringProvider.update(Are
161 aMonitoringProvider.java:73)
162 E/AndroidRuntime( 3831): at android.content.ContentProvider$Transport.upd
163 ate(ContentProvider.java:233)
164 E/AndroidRuntime( 3831): at android.content.ContentResolver.update(Conten
165 tResolver.java:847)
166 E/AndroidRuntime( 3831): at com.notfall.MainActivity$1$1.onClick(MainActi
167 vity.java:221)
168 E/AndroidRuntime( 3831): at com.android.internal.app.AlertController$Butt
169 onHandler.handleMessage(AlertController.java:166)
170 E/AndroidRuntime( 3831): at android.os.Handler.dispatchMessage(Handler.ja
171 va:99)
172 E/AndroidRuntime( 3831): at android.os.Looper.loop(Looper.java:132)
173 E/AndroidRuntime( 3831): at android.app.ActivityThread.main(ActivityThrea
174 d.java:4025)
175 E/AndroidRuntime( 3831): at java.lang.reflect.Method.invokeNative(Native
176 Method)
177 E/AndroidRuntime( 3831): at java.lang.reflect.Method.invoke(Method.java:4
178 91)
179 E/AndroidRuntime( 3831): at com.android.internal.os.ZygoteInit$MethodAndA
180 rgsCaller.run(ZygoteInit.java:841)
181 E/AndroidRuntime( 3831): at com.android.internal.os.ZygoteInit.main(Zygot
182 eInit.java:599)
183 E/AndroidRuntime( 3831): at dalvik.system.NativeStart.main(Native Method)
184
185ContentResolver cr = getContentResolver();
186 final String[] projection = { AreaMonitoringDB.ID, AreaMonitoringDB.COL_FLAG,AreaMonitoringDB.COL_FLAG2,AreaMonitoringDB.COL_FLAG3,AreaMonitoringDB.COL_NUMBER };
187 final String id = "%1%";
188 cur = cr.query(AreaMonitoringProvider.CONTENT_URI,
189 projection,
190 AreaMonitoringDB.ID + " LIKE ?",
191 new String[] {id},
192 null);
193
194 cur.moveToFirst();
195
19603-21 02:11:42.590: E/AndroidRuntime(7665): FATAL EXCEPTION: main
197 03-21 02:11:42.590: E/AndroidRuntime(7665): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
198 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:421)
199 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:117)
200 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:49)
201 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.database.CursorWrapper.getInt(CursorWrapper.java:96)
202 03-21 02:11:42.590: E/AndroidRuntime(7665): at com.notfall.MainActivity$3.onClick(MainActivity.java:324)
203 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.view.View.performClick(View.java:3112)
204 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.view.View$PerformClick.run(View.java:11956)
205 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.os.Handler.handleCallback(Handler.java:587)
206 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.os.Handler.dispatchMessage(Handler.java:92)
207 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.os.Looper.loop(Looper.java:132)
208 03-21 02:11:42.590: E/AndroidRuntime(7665): at android.app.ActivityThread.main(ActivityThread.java:4025)
209 03-21 02:11:42.590: E/AndroidRuntime(7665): at java.lang.reflect.Method.invokeNative(Native Method)
210 03-21 02:11:42.590: E/AndroidRuntime(7665): at java.lang.reflect.Method.invoke(Method.java:491)
211 03-21 02:11:42.590: E/AndroidRuntime(7665): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
212 03-21 02:11:42.590: E/AndroidRuntime(7665): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
213 03-21 02:11:42.590: E/AndroidRuntime(7665): at dalvik.system.NativeStart.main(Native Method)
214
215SQLiteDatabase sqlDB = mDB.getWritableDatabase();
216int rowsAffected;
217
218return rowsAffected = sqlDB.update(AreaMonitoringDB.TABLE_NAME, values, selection, selectionArgs);
219}
220
221private static final int DATABASE_VERSION = 11; //previously 10