I am trying to dynamically create tables. But, while creating a new table, unknown database exception comes up. why? How to solve the problem?
MainActivity.java
package com.example.demoapp;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
public class MainActivity extends Activity {
Button ADD,TAKE,STATS,UPLOAD;
static Spinner SPIN;
public Context CTX = this;
static ArrayAdapter<String> adapter;
static List<String>
list = new ArrayList<String>();
public DatabaseOperations DOP = new DatabaseOperations(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ADD = (Button)findViewById(R.id.mainAdd);
SPIN = (Spinner) findViewById(R.id.mainSpin);
//SQLiteDatabase SQ = DOP.getReadableDatabase();
Cursor CR = DOP.getInformation(DOP);
if(!CR.moveToFirst());
else
{
do
{
list.add(CR.getString(0));
}
while(CR.moveToNext());
}
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
MainActivity.SPIN.setAdapter(adapter);
ADD.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent i = new Intent(MainActivity.this,Details.class);
startActivity(i);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Details.java
package com.example.demoapp;
import java.util.ArrayList;
import java.util.List;
import com.example.demoapp.AppData.ClassInfo;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
public class Details extends Activity {
EditText SUB,STRENGTH;
Spinner SEM,STREAM;
Button SAVE;
String sub="", abc1="",abc2="",abc="";
Context c1=this, ctx=this;
int stre;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
final DatabaseOperations dp = new DatabaseOperations(this);
STREAM = (Spinner)findViewById(R.id.detStream);
String[] items1 = new String[]{"B.ARCH","B.TECH", "DIPLOMA", "MCA","M.TECH"};
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items1);
STREAM.setAdapter(adapter1);
STREAM.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View arg1,
int position, long id) {
// TODO Auto-generated method stub
Log.v("item", (String) parent.getItemAtPosition(position));
abc1 = (String) parent.getItemAtPosition(position)+"_";
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
SEM = (Spinner)findViewById(R.id.detSem);
String[] items2 = new String[]{"1st", "2nd", "3rd","4th","5th","6th","7th","8th","9th","10th"};
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items2);
SEM.setAdapter(adapter2);
SEM.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View arg1,
int position, long id) {
// TODO Auto-generated method stub
Log.v("item", (String) parent.getItemAtPosition(position));
abc2 = (String) parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
//abc = abc1 + abc2;
SUB = (EditText) findViewById(R.id.detSub);
STRENGTH = (EditText) findViewById(R.id.detStrength);
SAVE = (Button) findViewById(R.id.detSave);
SAVE.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
sub = SUB.getText().toString();
stre = Integer.valueOf(STRENGTH.getText().toString());
abc = abc1 + abc2;
abc += "_"+sub;
Log.v("item", abc);
//spinner = (Spinner) findViewById(R.id.spinner);
SQLiteDatabase SQ = dp.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(ClassInfo.CLASS_NAME,abc);
cv.put(ClassInfo.NUMBER, stre);
SQ.insert(ClassInfo.TABLE_NAME, null, cv);
AppData.sendInfo(abc,stre);
//DatabaseOperations dp1 = new DatabaseOperations(c1);
SQLiteDatabase SQ1 = dp.getReadableDatabase();
dp.newTable(abc,dp);
dp.fillTable(abc,stre,dp);
//ArrayAdapter<String> adapter;
//List<String> list;
//list = new ArrayList<String>();
MainActivity.list.add(abc);
abc="";
MainActivity.adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_spinner_item, MainActivity.list);
MainActivity.adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
MainActivity.SPIN.setAdapter(MainActivity.adapter);
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.details, menu);
return true;
}
}
AppData.java
package com.example.demoapp;
import android.provider.BaseColumns;
public class AppData {
public static String tableNameHolder="";
public static int strengthHolder;
public AppData(){}
public static void sendInfo(String abc, int stre) {
// TODO Auto-generated method stub
tableNameHolder = abc;
strengthHolder = stre;
}
public static abstract class ClassInfo implements BaseColumns{
public static final String CLASS_NAME = "class_name";
public static final String NUMBER = "number";
public static final String ROLL_NO = "roll_no";
public static final String PRESENT = "present";
public static final String TOTAL = "total";
public static final String DATABASE_NAME = "class_info.db";
public static final String TABLE_NAME = "class_table";
}
}
DatabaseOperations.java
package com.example.demoapp;
import com.example.demoapp.AppData.ClassInfo;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DatabaseOperations extends SQLiteOpenHelper {
public static int database_version = 1;
public String CREATE_QUERY = "CREATE TABLE " + ClassInfo.TABLE_NAME + "(" + ClassInfo.CLASS_NAME + " TEXT," + ClassInfo.NUMBER + " INTEGER);";
String tableName="";
public String CREATE_QUERY2 ;
public DatabaseOperations(Context context) {
super(context, ClassInfo.DATABASE_NAME, null, database_version);
// TODO Auto-generated constructor stub
Log.d("Database operations", "Database created");
}
@Override
public void onCreate(SQLiteDatabase sdb) {
// TODO Auto-generated method stub
Log.d("Database operations", "onCreate entered");
sdb.execSQL(CREATE_QUERY);
Log.d("Database operations", CREATE_QUERY);
Log.d("Database operations", "onCreate - Table created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
public Cursor getInformation(DatabaseOperations dop){
SQLiteDatabase SQ = dop.getReadableDatabase();
String[] columns = {ClassInfo.CLASS_NAME, ClassInfo.NUMBER};
Cursor CR = SQ.query(ClassInfo.TABLE_NAME, columns, null, null, null, null, null);
Log.d("Database operations", "Class table accessed");
return CR;
}
public void newTable(String abc, DatabaseOperations dp1) {
// TODO Auto-generated method stub
SQLiteDatabase sdb = dp1.getWritableDatabase();
tableName = abc;
Log.d("newTable", tableName);
CREATE_QUERY2 = "CREATE TABLE " + tableName + "(" + AppData.ClassInfo.ROLL_NO + " INTEGER," + ClassInfo.PRESENT + " INTEGER," + ClassInfo.TOTAL + " INTEGER);";
sdb.execSQL(CREATE_QUERY2);
}
public void fillTable(String abc, int stre, DatabaseOperations dp1) {
// TODO Auto-generated method stub
int counter = 1;
SQLiteDatabase SQ = dp1.getWritableDatabase();
ContentValues cv = new ContentValues();
while(counter<=stre)
{
cv.put(ClassInfo.ROLL_NO, counter);
cv.put(ClassInfo.PRESENT,0);
cv.put(ClassInfo.TOTAL,0);
SQ.insert(abc, null, cv);
counter++;
}
}
}
Aucun commentaire:
Enregistrer un commentaire