lundi 13 avril 2015

How do I get my sqlite db to work in a fragment? I click to save data and it crashes

This is my Database Adapter, I cannot get it to run for some reason due to the problems with the "this" statements



import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
* Created by dpivl on 03/09/2015.
*/
public class CowsDatabaseAdapter {

CowDbHelper helper;

public CowsDatabaseAdapter(Context context) {
helper = new CowDbHelper(context);
}

public long insertData(String Loglength, String Logdiameter,String`enter code here`Logid) {

SQLiteDatabase db = helper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(CowDbHelper.LOGLENGTH, Loglength);
contentValues.put(CowDbHelper.LOGDIAMETER, Logdiameter);
contentValues.put(CowDbHelper.LOGID, Logid);

long id = db.insert(CowDbHelper.TABLE_NAME, null, contentValues);
return id;

}
public String getAllData(){
SQLiteDatabase db = helper.getWritableDatabase();
String [] columns = {CowDbHelper.UID, CowDbHelper.LOGLENGTH, CowDbHelper.LOGDIAMETER, CowDbHelper.LOGID};
Cursor cursor = db.query(CowDbHelper.TABLE_NAME, columns, null, null, null, null, null);
StringBuffer buffer = new StringBuffer();
while (cursor.moveToNext()){
int cid = cursor.getInt(0);
String Loglength = cursor.getString(1);
String Logdiameter = cursor.getString(2);
String Logid = cursor.getString(3);
buffer.append(cid+ " " +Loglength+" " +Logdiameter+ " " +Logid+ "\n");
}
return buffer.toString();
}


static class CowDbHelper extends SQLiteOpenHelper {


private static final String DATABASE_NAME = "logdatabase";
private static final String TABLE_NAME = "LOGTABLE";
private static final int DATABASE_VERSION = 1;
private static final String UID = "_id";
private static final String LOGLENGTH = "Loglength";
private static final String LOGDIAMETER = "Logdiameter";
private static final String LOGID = "Logid";

private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+" (_id INTEGER PRIMARY KEY AUTOINCREMENT, "+LOGLENGTH+" VARCHAR(255), "+LOGDIAMETER+" VARCHAR(255), "+LOGID+" VARCHAR(255));";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS" +TABLE_NAME ;
private Context context;







public CowDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context=context;
}

@Override
public void onCreate(SQLiteDatabase db) {

try {
db.execSQL(CREATE_TABLE);
} catch (SQLException e) {
Message.message(context, "" +e);
}


}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
db.execSQL(DROP_TABLE);
onCreate(db);
} catch (SQLException e) {
Message.message(context, "" +e);
}

}
}
}


This is my Message Class



public class Message {
public static void message(Context context, String message ) {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
}


This is my Fragment which is the third fragment in my app. I have a viewpager and tabs.



import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast;


public class Tab3 extends Fragment {

EditText Loglength, Logdiameter, Logid;

CowsDatabaseAdapter cowDbHelper;


@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tab_3, container, false);
return v;

Loglength = (EditText) getView().findViewById(R.id.logLength);
Logdiameter = (EditText) getView().findViewById(R.id.logDiameter);
Logid = (EditText) getView().findViewById(R.id.logId);


cowDbHelper = new CowsDatabaseAdapter(this);



}

public void saveData(View view) {
String loglength = Loglength.getText().toString();
String logdiameter = Logdiameter.getText().toString();
String logid = Logid.getText().toString();





long id = cowDbHelper.insertData(loglength, logdiameter, logid);
if (id<0){
Message.message(this, "Not Saved");

}
else {
Message.message(this, "Saved Successful");
}


}
public void viewCows (View view) {
String data = cowDbHelper.getAllData();
Message.message(this, data);
}




}

Aucun commentaire:

Enregistrer un commentaire