我不能调用我的构造函数方法SQLite

时间:2017-07-31 08:39:58

标签: android sqlite

我是android工作室的新手。我试过创建SQLite数据库但是当我尝试插入数据时,android studio无法解决它。我也在这一行上尝试了MainActivity.this和getApplicationContext而不是db=new DatabaseHelper(this);。并且在设备监视器上,它没有创建数据库文件

MainActivity.java

package com.example.lenovo.sqlite_2_deneme;

import android.content.Context;
import android.media.midi.MidiDevice;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    DatabaseHelper db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        db=new DatabaseHelper(this);

        EditText et_name,et_surname,et_number;
        Button btn_data;

        et_name= (EditText) findViewById(R.id.et_isim);
        et_surname= (EditText) findViewById(R.id.et_soyisim);
        et_number= (EditText) findViewById(R.id.et_numara);
        btn_data= (Button) findViewById(R.id.btn_veri);

        btn_data.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                db.insertData();

            }
        });

    }
}

和我的DatabaseHelper类

package com.example.lenovo.sqlite_2_deneme;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.ContactsContract;
import android.widget.TableLayout;


public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME= "student_info.db";
    public static final String TABLE_NAME="student_table";
    public static final String COL_1="ID";
    public static final String COL_2="NAME";
    public static final String COL_3="SURNAME";
    public static final String COL_4="NUMBER";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE"+ TABLE_NAME+"(ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, SURNAME TEXT, NUMBER INTEGER)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL("DROP TABLE IF EXISTS"+ TABLE_NAME);
        this.onCreate(db);
    }

    public Boolean DataInsert(String name, String surname, String number)
    {
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues contentValues=new ContentValues();
        contentValues.put(COL_2,name);
        contentValues.put(COL_3,surname);
        contentValues.put(COL_4,number);

        long sonuc= db.insert(TABLE_NAME,null,contentValues);

        if(sonuc==-1)
            return false;
        else
            return true;

    }

}

3 个答案:

答案 0 :(得分:0)

当您致电

时,您的数据库将在实例中创建
SQLiteDatabase db=this.getWritableDatabase();

目前我没有看到你在代码中的任何地方都调过它。您已经编写了一个DataInsert方法,但是到目前为止您共享的代码中没有调用它。

答案 1 :(得分:0)

  

没有方法 import textwrap def _format_original_filename(view, context, model, name): formatted_original_name = textwrap.fill(model.original_name, 25) return formatted_original_name column_formatters = {"original_name": _format_original_name} 。你应该用    insertData() 方法。

DataInsert()

<强> FYI

   db=new DatabaseHelper(MainActivity.this);

    EditText et_name,et_surname,et_number;
    Button btn_data;

    et_name= (EditText) findViewById(R.id.et_isim);
    et_surname= (EditText) findViewById(R.id.et_soyisim);
    et_number= (EditText) findViewById(R.id.et_numara);
    btn_data= (Button) findViewById(R.id.btn_veri);

    btn_data.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            db.DataInsert(et_name.getText().toString(),et_surname.getText().toString(),et_number.getText().toString());

        }
    });
  

第一次创建数据库时调用。

答案 2 :(得分:0)

你的sql查询是错误的给出表中的空格(插入数据),还有onupgrade和没有方法insertData()

db.execSQL("CREATE TABLE "+ TABLE_NAME+"(ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, SURNAME TEXT, NUMBER INTEGER)");