AndroidスタジオとSQLiteが新しくなりました。AndroidスタジオのSQLiteデータベースにデータを追加する際にエラーが発生しました
友だちの詳細に入力してデータベースに追加するアプリを作成する。
私は友人を追加するために、私のデータベースのクラスと私の活動を作成しましたが、私はデータベースに追加しようとするたびに、私は述べlogcatでエラーが出ます:
11-16 20:40:20.083 2641-2641/com.example.kod45.myapplication E/SQLiteDatabase: Error inserting [email protected] NAME=paul ID=1 SURNAME=pail
android.database.sqlite.SQLiteException: table friends_table has no column named EMAIL (code 1): , while compiling: INSERT INTO friends_table(EMAIL,NAME,ID,SURNAME) VALUES (?,?,?,?)
#################################################################
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(table friends_table has no column named EMAIL (code 1): , while compiling: INSERT INTO friends_table(EMAIL,NAME,ID,SURNAME) VALUES (?,?,?,?))
をここに私のデータベースハンドラは次のとおりです。
public class DBHandler extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "Friends.db";
public static final String TABLE_NAME = "friends_table";
public static final String ID_COL = "ID";
public static final String EMAIL = "EMAIL";
public static final String FIRST_NAME = "NAME";
public static final String SURNAME = "SURNAME";
public DBHandler(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db)
{
String CREATE_FRIENDS_TABLE = "CREATE TABLE " + TABLE_NAME + "("
+ ID_COL + " INTEGER PRIMARY KEY,"
+ EMAIL + "TEXT,"
+ FIRST_NAME + "TEXT,"
+ SURNAME + "TEXT" + ")";
db.execSQL(CREATE_FRIENDS_TABLE);
}
public void onUpgrade(SQLiteDatabase db, int oldversion, int newversion) {
// example of drop old tables and Re-
//create tables.
//you can alter tables such as add
//columns, etc. but not drop tables
db.execSQL("drop table if exists "
+ TABLE_NAME);
onCreate(db);
}
public void addNewFriend(Friend newFriend)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(ID_COL, newFriend.getFriendID());
values.put(EMAIL, newFriend.getEmailAddress());
values.put(FIRST_NAME, newFriend.getFirstName());
values.put(SURNAME, newFriend.getSurname());
db.insert(TABLE_NAME, null, values);
db.close();
}
public ArrayList<Friend> getAllFriends()
{
ArrayList<Friend> friendList = new ArrayList<Friend>();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if(cursor.moveToFirst()) {
do
{
Friend friend = new Friend();
friend.setFriendID(Integer.parseInt(cursor.getString(0)));
friend.setEmailAddress(cursor.getString(1));
friend.setFirstName(cursor.getString(2));
friend.setSurname(cursor.getString(3));
//Adding to list
friendList.add(friend);
}
while (cursor.moveToNext()) ;
}
return friendList;
}
}
そしてまた、私は追加してい方法:
public class AddFriends extends AppCompatActivity {
DBHandler myDB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_friends);
myDB = new DBHandler(this);
}
public void addFriend(View v) {
EditText email = (EditText) findViewById(R.id.emailText);
EditText firstName = (EditText) findViewById(R.id.firstnameText);
EditText surname = (EditText) findViewById(R.id.surnameText);
EditText id = (EditText) findViewById (R.id.idText);
Button addData = (Button)findViewById(R.id.addFriendButton);
//Passing them as strings
String emailString = email.getText().toString();
String firstNameString = firstName.getText().toString();
String surnameString = surname.getText().toString();
int idNum = Integer.parseInt(id.getText().toString());
String emailPattern = "[a-zA-Z0-9._-][email protected][a-z0-9]+\\.+[a-z0-9]+";
if(emailString.matches(emailPattern))
{
Friend friend = new Friend(idNum, emailString, firstNameString, surnameString);
myDB.addNewFriend(friend);
// startActivity(new Intent(this, ViewAllFriends.class));
}
else
{
Toast.makeText(this, "Email not valid", Toast.LENGTH_SHORT).show();
}
}
@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_home) {
startActivity(new Intent(this, MainActivity.class));
}
else if(id == R.id.action_search)
{
// startActivity(new Intent(this, SearchFriends.class));
Toast.makeText(this, "Already on Add Friend Page", Toast.LENGTH_SHORT).show();
}
else if(id == R.id.action_view)
{
// startActivity(new Intent(this, ViewAllFriends.class));
Toast.makeText(this, "Already on Add Friend Page", Toast.LENGTH_SHORT).show();
}
else if(id == R.id.action_add){
Toast.makeText(this, "Already on# Add Friend Page", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
}
!それは私が探していないものでしたが、私は今になります。どうもありがとうございました! –