2016-09-03 11 views
1

私はAndroid開発の新機能です。どうか私はどのようにSqliteデータベースに列名を動的に格納することができます。SQLiteデータベースにアンドロイドでカラムを動的に保存するにはどうすればいいですか?

ここの下にデータベースを作成します。

public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    db.execSQL(
    "create table contacts " + 
    "(id integer primary key, name text,phone text,email text, street text,place text)" 
); 
} 

そして、ここで以下のクエリを挿入します。

public boolean insertContact (String name, String phone, String email,String street,String place)          
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put("name", name); 
    contentValues.put("phone", phone); 
    contentValues.put("email", email);  
    contentValues.put("street", street); 
    contentValues.put("place", place); 
    db.insert("contacts", null, contentValues); 
    return true; 
} 
+0

動的に列名を変更する必要はありません。列名を変更する必要がある場合は、列名を変更する必要があります。列値を動的に変更できません。列名を変更するには、ALTERコマンド –

+0

@brahmyadigopula 1を使用します。テキストビューが1つあるとします。私はそれをデータベースに格納することができます。 2.Suppose私はまた、私の.xmlファイルで2つのテキストビューをincreseどのように私は動的にSqliteデータベースに変更を挿入せずに格納することができますクエリを格納します。 – user6789978

+0

あなたは、より多くの列が動的に正しいのであれば、その列を見積もり、テーブルを作成する必要があります。テーブルを作成してdefault.andカラムに値を挿入します。 –

答えて

2

あなたはこのように、あなたのONUPGRADE()メソッドに対してALTER TABLE機能を使用することができます。

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

// If you need to add a column 
if (newVersion > oldVersion) { 
    db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0"); 
} 
} 

明らかに、SQLiteは列定義によって異なります

0

新しい行を挿入するために、表の各列に値を指定する必要はありません。いくつか、または使用可能な列のどれも、すべてのことができ、呼び出し元の関数は、それが挿入したい値か決めましょう

public long insertContact(ContentValues contentValues) { 
    return db.insert("contacts", null, contentValues); 
} 

:あなただけにあなたの方法でコードを変更することができます。指定されていない値は表のnullになります。例えば、関数呼び出しがない場合:

EditText name, email; 

// ... 

ContentValues values = new ContentValues(); 
values.put("name", name.getText().toString()); 
values.put("email", email.getText().toString()); 
insertContact(values); 

は「名前」と「メール」に充填し、カラムnullの残りの部分と、データベースに新しい行を挿入します。

関連する問題