我是Android应用程序开发的新手。我试图创建一个插入了一些值的基本SQL表。当我尝试从表中提取值时,会捕获一些异常。
任何人都可以帮忙。
Database Helper:
package com.example.mathialagan.app1;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
import static java.security.AccessController.getContext;
/**
* Created by MATHIALAGAN on 3/12/2017.
*/
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String db_name= "Employee_Details.db";
public static final String table_name="Table_1";
public static final String column_1= "ID";
public static final String column_2= "Name";
public static final String column_3= "Surname";
public static final String column_4= "Joining_Year";
public DatabaseHelper(Context context) {
super(context, db_name, null, 1);
//SQLiteDatabase db= this.getWritableDatabase()
}
@Override
public void onCreate(SQLiteDatabase db) {
// db.execSQL("CREATE TABLE" + table_name + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, Surname TEXT, Joining_Year INTEGER)");
String CREATE_DATABASE = "CREATE TABLE " + table_name + "(" +
column_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
column_2 + " TEXT, "+
column_3 +" TEXT, "+
column_4+ " TEXT"+")" ;
db.execSQL(CREATE_DATABASE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" + table_name);
onCreate(db);
}
public boolean insertData (String name, String surname, String yr)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(column_2, name);
cv.put(column_3, surname);
cv.put(column_4, yr);
long result=db.insert(table_name, null, cv);
if (result == -1)
return false;
else
return true;
}
public Cursor getAllData()
{
SQLiteDatabase db = this.getWritableDatabase();
// Cursor res = db.rawQuery("SELECT * FROM" + table_name, null);
Cursor res = db.rawQuery("SELECT * FROM" + table_name, null);
return res;
}
}
MainActivity:
package com.example.mathialagan.app1;
import android.database.Cursor;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
DatabaseHelper myDb;
EditText editName, editSurname, editYear , please;
Button btnAddData, btnView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDb = new DatabaseHelper(this);
editName = (EditText)findViewById(R.id.editText);
editSurname = (EditText)findViewById(R.id.editText2);
editYear = (EditText)findViewById(R.id.editText3);
please = (EditText)findViewById(R.id.editText4) ;
btnAddData = (Button)findViewById(R.id.button);
btnView = (Button)findViewById(R.id.button2);
adddata();
viewData();
}
public void adddata()
{
btnAddData.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isInserted = myDb.insertData(editName.getText().toString(),
editSurname.getText().toString(),
editYear.getText().toString());
if (isInserted == true)
Toast.makeText(MainActivity.this, "SUCCESS", Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this, "HAVE TO WORK MORE", Toast.LENGTH_SHORT).show();
}
}
);
}
public void viewData()
{
btnView.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Cursor res = myDb.getAllData();
if (res.getCount() == 0) {
Toast.makeText(MainActivity.this, "Nothing in DB", Toast.LENGTH_SHORT).show();
return;
} else {
StringBuffer bf = new StringBuffer();
while (res.moveToNext()) {
bf.append("ID:" + res.getString(0) + "\n");
bf.append("NAME:" + res.getString(1) + "\n");
bf.append("SURNAME:" + res.getString(2) + "\n");
bf.append("JOINING YEAR:" + res.getString(3) + "\n");
}
showMessage("Data " , bf.toString());
}
}
catch (Exception e)
{
Toast.makeText(MainActivity.this,"DB ", Toast.LENGTH_SHORT).show();
}
}
}
);
}
public void showMessage (String title, String message)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
}
答案 0 :(得分:1)
也许像“SELECT * FROM”这样的空格插入“SELECT * FROM”?
Cursor res = db.rawQuery("SELECT * FROM " + table_name, null); //<-----
return res;