Ich habe mehrere verschiedene Videos und Fragen hier über ähnliche Probleme angeschaut und mein Code scheint in Ordnung zu sein, aber kann einfach nicht herausfinden, warum es einen Fehler beim Kompilieren onCreate in meiner Datenbank-Klasse hat.Fehler beim Aufruf der onCreate-Datenbank. Android Studios
Ich versuche nur eine Zeile zu erstellen und der Datenbank hinzuzufügen. Diese
ist die MainActivity
public class MainActivity extends AppCompatActivity {
EditText First, Last, Make, Model, Cost;
Button Add;
Context dx = this;
DatabaseOps mydb;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mydb = new DatabaseOps(this);
First = (EditText) findViewById(R.id.First_Name);
Last = (EditText) findViewById(R.id.Last_Name);
Make = (EditText) findViewById(R.id.Car_Make);
Model = (EditText) findViewById(R.id.Car_Model);
Cost = (EditText) findViewById(R.id.Car_Cost);
Add = (Button) findViewById(R.id.add);
addData();
}
public void addData()
{
Add.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
boolean ifInserted = mydb.InsertData(First.getText().toString(),
Last.getText().toString(),
Make.getText().toString(),
Model.getText().toString(),
Cost.getText().toString());
if (ifInserted == true) {
Toast.makeText(getBaseContext(), "Successful entry", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getBaseContext(), "UnSuccessful entry TRY AGAIN", Toast.LENGTH_LONG).show();
}
}
});
}
}
Dies ist die Datenbank-Klasse
public class DatabaseOps extends SQLiteOpenHelper
{
public static final String ID = "ID";
public static final String CUSTOMER_FIRST_NAME = "Customer First Name";
public static final String CUSTOMER_LAST_NAME = "Customer Last Name";
public static final String CAR_MAKE = "Car Make";
public static final String CAR_MODEL = "Car Model";
public static final String COST = "Cost";
public static final String DATABASE_NAME = "CAR_DEALER.db";
public static final String Table_name = "CUSTOMER_TABLE";
public static final String Table_create = "create table"+ Table_name + "(" +
ID + "INTEGER PRIMARY KEY AUTOINCREMENT"+
CUSTOMER_FIRST_NAME +"TEXT" +
CUSTOMER_LAST_NAME +"TEXT" +
CAR_MAKE +"TEXT" +
CAR_MODEL +"TEXT" +
COST +"Integer"
+")";
public DatabaseOps(Context context)
{
super(context, DATABASE_NAME, null, 1);
Log.d("DatabaseOps", "Success Database created!");
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(Table_create);
Log.d("DatabaseOps", "Success Table created!");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1)
{
db.execSQL("Drop Table IF Exists" +Table_name);
onCreate(db);
}
public boolean InsertData (String First, String Last, String Make, String Model, String Cost)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(CUSTOMER_FIRST_NAME, First);
cv.put(CUSTOMER_LAST_NAME, Last);
cv.put(CAR_MAKE, Make);
cv.put(CAR_MODEL, Model);
cv.put(COST, Cost);
Long result = db.insert(Table_name, null, cv);
if(result == -1)
{
return false;
}
else
{
return true;
}
}
}
Ich dachte, es könnte ein Problem mit der Manifest-Datei der Datenbank-Klasse nicht initialisiert, Das Manifest gibt jedoch an, dass in der Klasse kein Standardkonstruktor vorhanden ist.
<?xml version="1.0" encoding="utf-8"?>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Sie brauchen auch Kommas nach jedem Typ. –