vendredi 17 avril 2015

How to use sqlite in fragment

I cannot seem to find a tutorial anywhere that can help me use an sqlite db in a fragment. I am so frustrated as I re made the database and when I click on the save button it crashes. What do I have to do to get it to work?


public class Tab3 extends Fragment {



Button save, reset, load;
EditText logl, logd, logid;
DataHandler handler;


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


}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

save = (Button) getActivity().findViewById(R.id.buttonSave);
load = (Button) getActivity().findViewById(R.id.buttonShow);
reset = (Button) getActivity().findViewById(R.id.reset);
logl = (EditText) getActivity().findViewById(R.id.logLength);
logd = (EditText) getActivity().findViewById(R.id.logDiameter);
logid = (EditText) getActivity().findViewById(R.id.logId);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

String getLoglength = logl.getText().toString();
String getLogdiameter = logd.getText().toString();
String getLogid = logid.getText().toString();
handler = new DataHandler(getActivity());
handler.open();
long id = handler.insertData(getLoglength, getLogdiameter,getLogid);
Toast.makeText(getActivity(), "Data Inserted", Toast.LENGTH_LONG).show();
handler.close();
}
});

load.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String getLoglength, getLogdiameter, getLogid;
getLoglength = "";
getLogdiameter = "";
getLogid = "";
handler = new DataHandler(getActivity());
handler.open();
Cursor C = handler.returnData();
if (C.moveToFirst()){

}
do{
getLoglength = C.getString(0);
getLogdiameter = C.getString(1);
getLogid = C.getString(2);

}
while (C.moveToNext());

handler.close();
Toast.makeText(getActivity(), "Log Length:" +getLoglength+ "Log Diameter: " +getLogdiameter+ "Log ID: " +getLogid, Toast.LENGTH_LONG).show();
}
});
}


}


This is my Datahandler



public class DataHandler {


public static final String LOGLENGTH = "logl";
public static final String LOGDIAMETER = "logd";
public static final String LOGID = "logid";
public static final String TABLE_NAME = "mylogtable";
public static final String DATABASE_NAME = "mydatabase";
public static final int DATABASE_VERSION = 1;
private static final String TABLE_CREATE = "CREATE TABLE "+TABLE_NAME+" (_id INTEGER PRIMARY KEY AUTOINCREMENT, "+LOGLENGTH+" VARCHAR(255), "+LOGDIAMETER+" VARCHAR(255), "+LOGID+" VARCHAR(255));";

DatabaseHelper dbhelper;
Context ctx;
SQLiteDatabase db;

public DataHandler(Context ctx) {
this.ctx = ctx;
}

private static class DatabaseHelper extends SQLiteOpenHelper {

public DatabaseHelper(Context ctx) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}


@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(TABLE_CREATE);
} catch (SQLException e) {
e.printStackTrace();
}

}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS mylogtable");
onCreate(db);
}

}

public DataHandler open() {
db = dbhelper.getWritableDatabase();
return this;
}

public void close(){
dbhelper.close();
}

public long insertData (String logl, String logd, String logid){
ContentValues content = new ContentValues();
content.put(LOGLENGTH, logl);
content.put(LOGDIAMETER, logd);
content.put(LOGID, logid);
return db.insertOrThrow(TABLE_NAME, null, content);
}

public Cursor returnData(){
return db.query(TABLE_NAME, new String[] {LOGID, LOGLENGTH, LOGDIAMETER}, null, null, null, null, null);
}
}

Aucun commentaire:

Enregistrer un commentaire