2015-07-28 66 views
-1

我忙于学习android编程。我创建了一个应用程序,其中有不同的按钮点击,然后显示一个新的活动。该应用程序工作100%点击按钮。我现在想创建一个数据库。我遵循一个教程并按照教程中的相同方式创建数据库。我现在只想创建一个带有列ID,类别,标题和信息的表的数据库。当我在连接到PC的设备上从android studio上运行应用程序时,当应用程序打开时应用程序停止工作,我收到消息。Android studio创建数据库

我对MainActivity.java代码

package app.mobiledevicesecurity; 

import android.content.Intent; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 


public class MainActivity extends ActionBarActivity { 
DatabaseHelper myDb; 
private static Button readbtn; 
private static Button quizbtn; 
private static Button scoresbtn; 
private static Button settingsbtn; 
private static Button helpbtn; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    myDb = new DatabaseHelper(this); 
    OnClickReadButtonListener(); 
    OnClickQuizButtonListener(); 
    OnClickScoresButtonListener(); 
    OnClickSettingsButtonListener(); 
    OnClickHelpButtonListener(); 
} 

public void OnClickReadButtonListener() { 
    readbtn = (Button) findViewById(R.id.readbutton); 
    readbtn.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent("app.mobiledevicesecurity.Read_Category"); 
        startActivity(intent); 
       } 
      } 
    ); 
} 

public void OnClickQuizButtonListener() { 
    quizbtn = (Button) findViewById(R.id.quizbutton); 
    quizbtn.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent("app.mobiledevicesecurity.Quiz"); 
        startActivity(intent); 
       } 
      } 
    ); 
} 

public void OnClickScoresButtonListener() { 
    scoresbtn = (Button) findViewById(R.id.scoresbutton); 
    scoresbtn.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent("app.mobiledevicesecurity.Scores"); 
        startActivity(intent); 
       } 
      } 
    ); 
} 

public void OnClickSettingsButtonListener() { 
    settingsbtn = (Button) findViewById(R.id.settingsbutton); 
    settingsbtn.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent("app.mobiledevicesecurity.Settings"); 
        startActivity(intent); 
       } 
      } 
    ); 
} 

public void OnClickHelpButtonListener() { 
    helpbtn = (Button) findViewById(R.id.helpbutton); 
    helpbtn.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent("app.mobiledevicesecurity.Help"); 
        startActivity(intent); 
       } 
      } 
    ); 
} 

@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); 
} 

}

代码DatabaseHelper:

package app.mobiledevicesecurity; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

/** 
* Created by Martin on 2015/07/28. 
*/ 
public class DatabaseHelper extends SQLiteOpenHelper { 
public static final String DATABASE_NAME = "mobilesec.db"; 
public static final String TABLE_NAME = "read_table"; 
public static final String COL_1 = "ID"; 
public static final String COL_2 = "CATEGORY"; 
public static final String COL_3 = "HEADING"; 
public static final String COL_4 = "INFO"; 

public DatabaseHelper(Context context) { 
    super(context, DATABASE_NAME, null, 1); 
    SQLiteDatabase db = this.getWritableDatabase(); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table "+" (ID INTEGER PRIMARY KEY AUTOINCREMENT,CATEGORY TEXT,HEADING TEXT,INFO TEXT)"); 
} 

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

代码的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".Read_Category" 
     android:label="@string/title_activity_read__category" > 
     <intent-filter> 
      <action android:name="app.mobiledevicesecurity.Read_Category" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".Quiz" 
     android:label="@string/title_activity_quiz" > 
     <intent-filter> 
      <action android:name="app.mobiledevicesecurity.Quiz" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".Scores" 
     android:label="@string/title_activity_scores" > 
     <intent-filter> 
      <action android:name="app.mobiledevicesecurity.Scores" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".Settings" 
     android:label="@string/title_activity_settings" > 
     <intent-filter> 
      <action android:name="app.mobiledevicesecurity.Settings" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".Help" 
     android:label="@string/title_activity_help" > 
     <intent-filter> 
      <action android:name="app.mobiledevicesecurity.Help" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

任何帮助,将不胜感激

+0

后logcat输出。它会告诉你这个问题,甚至可能发生什么情况。 – csmckelvey

+0

请发布logcat输出,显示错误/堆栈跟踪。 – GreyBeardedGeek

+0

它是“CREATE TABLE ** Table_Name **(...)” –

回答

1

你缺少TABLE_NAMEcreate table查询。 应该是:

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table "+TABLE_NAME+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, CATEGORY TEXT, HEADING TEXT, INFO TEXT)"); 
} 
+0

感谢您的帮助 –

+0

如果它适合您,您可以接受这是正确的答案。这对未来的其他人会有所帮助。 –

+0

当我进入文件资源管理器下的Android设备管理器时,似乎还没有创建数据库。数据文件夹不想展开,这可能意味着在那里没有创建任何东西。任何帮助? –