Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android应用程序上的Sqlite错误_Java_Android_Sqlite_Android Sqlite - Fatal编程技术网

Java Android应用程序上的Sqlite错误

Java Android应用程序上的Sqlite错误,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我试图建立一个应用程序,设置许多闹钟,我想保存一个SQLite数据库的报警。已经看了很多这方面的教程,但仍然有使用数据库的问题。首先我想通过按下按钮一个一个地保存警报。我还试图手动插入两个警报,但也没有成功。我做错了什么?我对这个很陌生 DBHelper类 public class DBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "MyDBName.db"; public static

我试图建立一个应用程序,设置许多闹钟,我想保存一个SQLite数据库的报警。已经看了很多这方面的教程,但仍然有使用数据库的问题。首先我想通过按下按钮一个一个地保存警报。我还试图手动插入两个警报,但也没有成功。我做错了什么?我对这个很陌生

DBHelper类

public class DBHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "MyDBName.db";
public static final String ALARMS_TABLE_NAME = "alarms";
public static final String ALARMS_COLUMN_ID = "id";
public static final String ALARMS_COLUMN_HOUR = "hour";
public static final String ALARMS_COLUMN_MINUTES = "minutes";


public DBHelper(Context context) {
    super(context, DATABASE_NAME, null, 33);
}

public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub

    db.execSQL("CREATE TABLE "+ALARMS_TABLE_NAME+" ("+ALARMS_COLUMN_ID+ " INTEGER PRIMARY KEY , "+
            ALARMS_COLUMN_HOUR+ " INTEGER, "+ALARMS_COLUMN_MINUTES+" INTEGER)");

    InsertAlarms(db);
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

    db.execSQL("DROP TABLE IF EXISTS "+ALARMS_TABLE_NAME);

    onCreate(db);
}

void AddAlarm(Alarm alarm)
{
    SQLiteDatabase db= this.getWritableDatabase();

    ContentValues cv=new ContentValues();

    cv.put(ALARMS_COLUMN_HOUR, alarm.getHour());
    cv.put(ALARMS_COLUMN_MINUTES, alarm.getMinutes());

    db.insert(ALARMS_TABLE_NAME, null, cv);
    db.close();
}

Cursor getAllAlarms()
{
    SQLiteDatabase db=this.getWritableDatabase();

    Cursor cur= db.rawQuery("SELECT * FROM "+ALARMS_TABLE_NAME,null);
    return cur;

}

void InsertAlarms(SQLiteDatabase db) //insert manually 2 alarms 
{
    ContentValues cv=new ContentValues();
    cv.put(ALARMS_COLUMN_ID, 1);
    cv.put(ALARMS_COLUMN_HOUR, 20);
    cv.put(ALARMS_COLUMN_MINUTES, 20);
    db.insert(ALARMS_TABLE_NAME, null, cv);

    cv.put(ALARMS_COLUMN_ID, 2);
    cv.put(ALARMS_COLUMN_HOUR, 20);
    cv.put(ALARMS_COLUMN_MINUTES, 20);
    db.insert(ALARMS_TABLE_NAME, null, cv);

}

int getAlarmCount()
{
    SQLiteDatabase db=this.getWritableDatabase();
    Cursor cur= db.rawQuery("Select * from "+ALARMS_TABLE_NAME, null);
    int x= cur.getCount();
    cur.close();
    return x;
}
等级警报:

public class Alarm {
int _id;
int _hour;
int _minutes;

public Alarm(int Hour, int Minutes)
{
    this._hour=Hour;
    this._minutes=Minutes;
}

public int getID()
{
    return this._id;
}
public void SetID(int ID)
{
    this._id=ID;
}
public int getHour()
{
    return this._hour;
}
public int getMinutes()
{
    return this._minutes;
}

public void setHour(int Hour)
{
    this._hour=Hour;
}

public void setMinutes(int Minutes)
{
    this._minutes=Minutes;
}
活动添加报警

public class AddAlarm extends Activity {

EditText txtHour;
EditText txtMinutes;

DBHelper dbHelper;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_addalarm);

    txtHour=(EditText)findViewById(R.id.txtHour);
    txtMinutes=(EditText)findViewById(R.id.txtMinutes);

    Button button1 = (Button)findViewById(R.id.addalarmbtn);

    button1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v){
           btnAddAlarm_Click(v);
        }
    });

}

public void btnAddAlarm_Click(View view)
{
    boolean ok=true;
    try
    {

        int hour=Integer.parseInt(txtHour.getText().toString());
        int minutes=Integer.parseInt(txtMinutes.getText().toString());

        Alarm al=new Alarm(hour,minutes);
        Toast.makeText(AddAlarm.this,"ADDED! ", Toast.LENGTH_LONG).show();
        dbHelper.AddAlarm(al);


    }
    catch(Exception ex)
    {
        Toast.makeText(AddAlarm.this,"ERROR! ", Toast.LENGTH_LONG).show();
    }

}
主要活动:

public class MainActivity extends AppCompatActivity {

Intent intent=getIntent();
DBHelper mydb;
TextView xupnitiria;
String hour;
public  static boolean flag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button)findViewById(R.id.set_alarm_button);

    //Bundle extras=intent.getExtras();
    mydb=new DBHelper(this);

    xupnitiria =(TextView)findViewById(R.id.xupnitiria);

    xupnitiria.setText(xupnitiria.getText()+String.valueOf(mydb.getAlarmCount()));
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v){
            Intent a= new Intent(MainActivity.this, AddAlarm.class);
            startActivity(a);
        }
    });


}
public class AddAlarm extends Activity {

    EditText txtHour;
    EditText txtMinutes;

    DBHelper dbHelper;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_addalarm);

        txtHour = (EditText) findViewById(R.id.txtHour);
        txtMinutes = (EditText) findViewById(R.id.txtMinutes);

        dbHelper=new DBHelper(this);

        Button button1 = (Button) findViewById(R.id.addalarmbtn);

        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                btnAddAlarm_Click(v);
            }
        });

    }

    public void btnAddAlarm_Click(View view) {
        boolean ok = true;
        try {

            int hour = Integer.parseInt(txtHour.getText().toString());
            int minutes = Integer.parseInt(txtMinutes.getText().toString());

            Alarm al = new Alarm(hour, minutes);
            Toast.makeText(AddAlarm.this, "ADDED! ", Toast.LENGTH_LONG).show();
            dbHelper.AddAlarm(al);


        } catch (Exception ex) {
            Toast.makeText(AddAlarm.this, "ERROR! ", Toast.LENGTH_LONG).show();
            ex.printStackTrace();
        }

    }
}
android监视器上的错误

10-04 15:07:26.592 2625-2625/com.google.android.gms E/ActivityThread: Service com.google.android.gms.chimera.GmsIntentOperationService has leaked ServiceConnection csk@8709fba that was originally bound here
                                                                  android.app.ServiceConnectionLeaked: Service com.google.android.gms.chimera.GmsIntentOperationService has leaked ServiceConnection csk@8709fba that was originally bound here
                                                                      at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1336)
                                                                      at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:1231)
                                                                      at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1450)
                                                                      at android.app.ContextImpl.bindService(ContextImpl.java:1422)
                                                                      at android.content.ContextWrapper.bindService(ContextWrapper.java:636)
                                                                      at android.content.ContextWrapper.bindService(ContextWrapper.java:636)
                                                                      at android.content.ContextWrapper.bindService(ContextWrapper.java:636)
                                                                      at android.content.ContextWrapper.bindService(ContextWrapper.java:636)
                                                                      at com.google.android.gms.chimera.container.zapp.ZappLogOperation.onHandleIntent(:com.google.android.gms:0)
                                                                      at com.google.android.chimera.IntentOperation.onHandleIntent(:com.google.android.gms:1)
                                                                      at bvq.run(:com.google.android.gms:9)
                                                                      at bvn.run(:com.google.android.gms:10)
                                                                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                                      at java.lang.Thread.run(Thread.java:761)
10-04 15:07:26.592 2625-2625/com.google.android.gms E/ActivityThread:Service com.google.android.gms.chimera.gmsintento操作服务已泄漏服务连接csk@8709fba原来是订在这里的
android.app.ServiceConnection泄漏:Service com.google.android.gms.chimera.gmsintentooperation服务已泄漏ServiceConnectioncsk@8709fba原来是订在这里的
在android.app.LoadedApk$ServiceDispatcher上。(LoadedApk.java:1336)
位于android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:1231)
位于android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1450)
位于android.app.ContextImpl.bindService(ContextImpl.java:1422)
位于android.content.ContextWrapper.bindService(ContextWrapper.java:636)
位于android.content.ContextWrapper.bindService(ContextWrapper.java:636)
位于android.content.ContextWrapper.bindService(ContextWrapper.java:636)
位于android.content.ContextWrapper.bindService(ContextWrapper.java:636)
在com.google.android.gms.chimera.container.zapp.ZappLogOperation.onHandleIntent(:com.google.android.gms:0)
在com.google.android.chimera.IntentOperation.onhandleContent(:com.google.android.gms:1)上
在bvq.run(:com.google.android.gms:9)
在bvn.run(:com.google.android.gms:10)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
运行(Thread.java:761)
在AddAlarm.java的onCreate()中添加以下内容:

dbHelper=new DBHelper(this);
还要查看logcat中的错误日志,请在try catch块中添加以下内容:

ex.printStackTrace();
添加报警活动:

public class AddAlarm extends Activity {

    EditText txtHour;
    EditText txtMinutes;

    DBHelper dbHelper;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_addalarm);

        txtHour = (EditText) findViewById(R.id.txtHour);
        txtMinutes = (EditText) findViewById(R.id.txtMinutes);

        dbHelper=new DBHelper(this);

        Button button1 = (Button) findViewById(R.id.addalarmbtn);

        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                btnAddAlarm_Click(v);
            }
        });

    }

    public void btnAddAlarm_Click(View view) {
        boolean ok = true;
        try {

            int hour = Integer.parseInt(txtHour.getText().toString());
            int minutes = Integer.parseInt(txtMinutes.getText().toString());

            Alarm al = new Alarm(hour, minutes);
            Toast.makeText(AddAlarm.this, "ADDED! ", Toast.LENGTH_LONG).show();
            dbHelper.AddAlarm(al);


        } catch (Exception ex) {
            Toast.makeText(AddAlarm.this, "ERROR! ", Toast.LENGTH_LONG).show();
            ex.printStackTrace();
        }

    }
}

你能发布错误堆栈跟踪吗?+它是从哪里抛出的?我能找到的所有错误都在android监视器上。(刚刚更新了问题)。不知道我是否回答了你的问题。请再次检查,您发布的stacktrace显示sqlite没有错误。您的服务有问题请看这里:看一下,使用debug,您可以找到哪一行抛出了错误,并且您可以通过搜索有关错误的一些信息,找到解决方案。问题是,当我单击AddAlarm Activity上的按钮时,它必须将警报添加到db中。相反,我得到的消息是“ERROR”,这意味着它去捕捉操作。