2017-04-17 10 views
1

ContentValuesを使用してデータを挿入する方法とSQLlite(Android)にRaw SQLを使用してデータを挿入する方法の違いを知りたいのですが、コンテンツの値を使用する利点はありますか?二つの異なる方法がある操作を、挿入を実行読み、削除、更新するにはSQLite AndroidにContentValuesとRaw SQLを使用してデータを挿入する方法の違いは何ですか?

+0

https://developer.android.com/reference/android/content/ContentValues.html –

答えて

1

:これらの:

  1. は生のクエリ

パラメータ化クエリを書く(推奨)パラメータ化クエリを書きますデータの挿入、読み取り、削除、または更新のために組み込み関数を使用して実行されるクエリです。これらの操作に関連する機能は、SQLiteDatabaseクラスで提供されています。

生クエリ:これらは、この場合、ユーザーはなどのMySQL、SQL Serverのような他のデータベースと同様の単純なSQLクエリは、テキストとしてクエリを記述する必要がありますされ、操作を実行するrawQuery(String sql,String [] selectionArgs)またはexecSQL(String sql,Object [] bindArgs)方法でクエリ文字列を渡されました。

重要な注意:Androidのドキュメントには、挿入を実行するために、生のクエリを使用することをお勧めします、読み取り、更新、削除の操作を、常にSQLiteDatabaseクラスの挿入を使用し、クエリ、更新、機能を削除しないでください。続き

は、データを挿入するために、生のクエリの例です:

public void insertItem(Item item) { 
    String query = "INSERT INTO " + ItemTable.NAME + " VALUES (0,?,?)"; 
    SQLiteDatabase db = getWritableDatabase(); 
    db.execSQL(query, new String[]{item.name, item.description}); 
    db.close(); 
} 

生のクエリを使用している間、我々はパラメータ化クエリが値をの成功または失敗のために返される機能がで、操作の結果を知るようになったことがありません操作。

parameterized queryを使用して挿入操作を実行するには、SQLiteDatabaseクラスで使用可能な挿入関数を呼び出す必要があります。 insert()関数は、public long insert(String tableName,String nullColumnHack,ContentValues values)のような3つのパラメータを持ちます。ここで、tableNameは、挿入するデータの名前です。ここで

は簡単な例です。詳細については

//Item is a class representing any item with id, name and description. 
public void addItem(Item item) { 
    SQLiteDatabase db = getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put("name",item.name); 
    // name - column 
    contentValues.put("description",item.description); 
    // description is column in items table, item.description has value for description 
    db.insert("Items", null, contentValues);//Items is table name 
    db.close(); 
} 

この答えが間違っているこのLink

+0

を参照してください。 'rawQuery'と' execSQL'はパラメータ化できます。これは 'selectionArgs' /' bindArgs'のためのものです。 –

+0

「生のクエリ」をパラメータ化することはできません。 – rafsanahmad007

+0

"パラメータ化されたクエリ"はパラメータを持つクエリなので、この名前は(つまり、文字列を返す)他の関数をより良く適合させるでしょう( 'insert'はパラメータ*を明示的に使っていない*)。これらの関数については、より適切な説明を使用する必要があります。 –

関連する問題