0

I am very new to Android developing and trying my luck with SQLite but i am stuck right now. Every time i start my application the app crashes. I simply want to add a value to the DB when i click on a button, but it does not work.

Could you help me?

This is my MainActivity imports [..]

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.btnStarzeit).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startSpeichern(1);
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    private void startSpeichern(int value){
        DatabaseHandler dbHandler = new DatabaseHandler(this,null,null,1);
        dbHandler.neueStartzeit(value);
    }
}

and this is my DatabaseHandler

imports[..]
public class DatabaseHandler extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 9;
    private static final String DATABASE_NAME = "Name der Datenbank";
    public static final String TABLE_PRODUCTS = "produkte";

    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_PRODUCTNAME = "productname";
    public static final String COLUMN_QUANTITY="menge";

    public DatabaseHandler (Context context, String name, SQLiteDatabase.CursorFactory factory,int version){
        super(context,DATABASE_NAME,factory,DATABASE_VERSION);
    }


    @Override
    public void onCreate(SQLiteDatabase db){

        String CREATE_PRODUCTS_TABLE = "CREATE TABLE " +
                TABLE_PRODUCTS + "("
                + COLUMN_ID + " INTEGER PRIMARY KEY," + COLUMN_PRODUCTNAME
                + " INTEGER," + COLUMN_QUANTITY + " INTEGER" + ")";
        db.execSQL(CREATE_PRODUCTS_TABLE);
    }

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

    public void neueStartzeit(){
        ContentValues values = new ContentValues();
        values.put(COLUMN_PRODUCTNAME,1);
        values.put(COLUMN_QUANTITY,1);
        SQLiteDatabase db = this.getWritableDatabase();
        db.insert(TABLE_PRODUCTS,null, values);
        db.close();
    }
}

Log

ddmlib: Broken pipe
java.io.IOException: Broken pipe
    at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
    at sun.nio.ch.IOUtil.write(IOUtil.java:65)
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487)
    at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
    at com.android.ddmlib.Client.sendAndConsume(Client.java:675)
    at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:342)
    at com.android.ddmlib.Client.requestAllocationStatus(Client.java:521)
    at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:847)
    at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:815)
    at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:775)
    at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:664)
    at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:46)
    at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:592)
ibsof
  • 29
  • 2
  • 7
  • Show us the stacktrace from the crash... – Darwind Mar 22 '15 at 23:45
  • Is it this what you were looking for? – ibsof Mar 23 '15 at 00:00
  • No, there should be a log stating some line in your code failed. The stacktrace you added is just a log saying ddms lost connection to your device at some point ;-) – Darwind Mar 23 '15 at 00:13
  • I am really sorry, I do not get it. What should i post or how can i get it? – ibsof Mar 23 '15 at 00:15
  • Look in logcat. It should show you something similar to what you posted, but it will reference a line in your code. Look here for info about logcat: http://developer.android.com/tools/debugging/ddms.html#logcat – Darwind Mar 23 '15 at 00:30
  • dbHandler.neueStartzeit(value); I'm just guessing here but this looks wrong. In DatabaseHandler this method does not take a value. – Steven Trigg Mar 23 '15 at 01:09

0 Answers0