· 8 years ago · Jan 11, 2018, 02:08 PM
1package com.wafihasan.truthordare;
2
3import android.content.ContentValues;
4import android.content.Context;
5import android.database.Cursor;
6import android.database.sqlite.SQLiteDatabase;
7import android.database.sqlite.SQLiteOpenHelper;
8
9public class DatabaseHandler extends SQLiteOpenHelper
10{
11 private static final int databaseVersion = 1;
12 private static final String databaseName = "names.db";
13 private static final String tableName = "namesTable";
14 private static final String columnsName = "Names";
15
16 public DatabaseHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
17 {
18 super(context, databaseName, factory, databaseVersion);
19 }
20
21 @Override
22 public void onCreate(SQLiteDatabase sqLiteDatabase)
23 {
24 // next line not needed ever
25 // sqLiteDatabase.execSQL(databaseName);
26
27
28 // when you create a table, you should really include an ID column to keep track of entries,
29 //make it integer primary key autoincrement. meaning that every entry into the table
30 //this column will increase by 1 all by itself.
31
32 String query = "CREATE TABLE " + tableName + "(_id INTEGER PRIMARY KEY AUTOINCREMENT,"
33 + columnsName + " TEXT NOT NULL" + ");";
34 sqLiteDatabase.execSQL(query);
35 }
36
37 @Override
38 public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1)
39 {
40 sqLiteDatabase.execSQL("DROP TABLE IF EXISTS "+tableName);
41 onCreate(sqLiteDatabase);
42 }
43
44 public void delete()
45 {
46 SQLiteDatabase sqLiteDatabase = getWritableDatabase();
47 sqLiteDatabase.delete("namesTable", "1", null);
48 }
49
50 public void addName(namesclass name)
51 {
52 ContentValues values = new ContentValues();
53 values.put(columnsName, name.getName());
54 SQLiteDatabase sqLiteDatabase = getWritableDatabase();
55/*
56 here you were trying to insert values into a column .. instead you want to populate
57 the ContentValues with data (which you did) and insert those values into your TABLE -
58 see you values have key value pair to put the name.getName() into column columnName
59 once you have your values set to do what you want, insert into the table.
60
61
62*/
63 // sqLiteDatabase.insert(columnsName, null, values);
64 sqLiteDatabase.insert(tableName, null, values);
65 sqLiteDatabase.close();
66 }
67
68 public void deleteName(String name)
69 {
70 SQLiteDatabase sqLiteDatabase = getWritableDatabase();
71 sqLiteDatabase.execSQL("DELETE FROM "+tableName+" WHERE "+columnsName+" =\" "+name+"\";");
72 sqLiteDatabase.close();
73 }
74
75 public String databaseToString()
76 {
77 String dbString = "";
78 SQLiteDatabase sqLiteDatabase = getWritableDatabase();
79 String query = "SELECT * FROM "+tableName+" ORDER BY RANDOM() LIMIT 1;";
80 // String query = "SELECT * FROM "+tableName;
81 Cursor c = sqLiteDatabase.rawQuery(query, null);
82 c.moveToFirst();
83 dbString = c.getString(0);
84 sqLiteDatabase.close();
85 return dbString;
86 }
87
88 public String getTableAsString()
89 {
90 String db = "";
91 SQLiteDatabase sqLiteDatabase = getWritableDatabase();
92
93 //I changed query, plus there is no column called name - I changed to your column variable
94
95 //String query = "SELECT * FROM "+tableName+" WHERE 1;";
96
97 String query = "SELECT * FROM "+tableName+";";
98 Cursor c = sqLiteDatabase.rawQuery(query, null);
99
100 //look at how I changed this
101
102 /*
103 c.moveToFirst();
104
105 while (!c.isAfterLast())
106 {
107 if(c.getString(c.getColumnIndex("name"))!= null)
108 {
109 db += c.getString(c.getColumnIndex("name"));
110 db += "\n";
111 }
112 }
113
114 */
115
116 if(c.moveToFirst() && c != null){
117 do{
118 db += c.getString(c.getColumnIndex(columnsName));
119 db += "\n";
120 }while(c.moveToNext());
121 }
122 sqLiteDatabase.close();
123 return db;
124 }
125}