insert
package test.example.com.test25;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
import android.util.Log;
public class clsDatabaseInsert extends clsDatabaseOpen {
clsDatabaseInsert(Context context)
{
super(context);
}
//通常のinsert
public int testTest1()
{
long lResult = 0;
StringBuilder sSQL = new StringBuilder();
sSQL.append(" insert into tbl1 values(");
sSQL.append(" 10");
sSQL.append(",10.5");
sSQL.append(",'a10'");
sSQL.append(" )");
Log.d("sSQL", sSQL.toString());
SQLiteStatement stmt = null;
try
{
Log.d("executeInsert","start");
stmt = super.db.compileStatement(sSQL.toString());
lResult = stmt.executeInsert();
Log.d("lResult",String.valueOf(lResult));
if(lResult < 0)
{
//insertエラー
return 2;
}
Log.d("executeInsert","end");
}
catch (SQLException e)
{
Log.d("error",e.getMessage().toString());
return 1;
}
catch (Exception e2)
{
Log.d("error",e2.getMessage().toString());
return 1;
}
finally
{
sSQL.delete(0,sSQL.length());
stmt = null;
sSQL = null;
Log.d("StringBuilder","delete");
}
return 0;
}
//パラメータを使用したinsert
public int testTest2()
{
long lResult = 0;
StringBuilder sSQL = new StringBuilder();
sSQL.append(" insert into tbl1 values(");
sSQL.append(" ?");
sSQL.append(",?");
sSQL.append(",?");
sSQL.append(" )");
Log.d("sSQL", sSQL.toString());
String[] arrayData =new String[]{"11","11.5","a11"};
Log.d("arrayData.length",String.valueOf(arrayData.length));
//SQLiteStatement stmt = null;
try
{
Log.d("execSQL","start");
super.db.execSQL(sSQL.toString(), arrayData);
/*
stmt = super.db.compileStatement(sSQL.toString());
lResult = stmt.executeInsert();
Log.d("lResult",String.valueOf(lResult));
if(lResult < 0)
{
//insertエラー
return 2;
}
*/
Log.d("execSQL","end");
}
catch (SQLException e)
{
Log.d("error",e.getMessage().toString());
return 1;
}
catch (Exception e2)
{
//ex.)
//error: PRIMARY KEY must be unique (code 19)
Log.d("error",e2.getMessage().toString());
return 1;
}
finally
{
sSQL.delete(0,sSQL.length());
//stmt = null;
sSQL = null;
Log.d("StringBuilder","delete");
}
return 0;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
|
「SQLiteStatement」を使った方法と「execSQL」を使用した方法を載せています。
compileStatementを使用してステートメントを発行します。
(例)
stmt = super.db.compileStatement(sSQL.toString());
ステートメントのexecuteInsertメソッドから登録したSQLを実行しています。
戻り値を取得できるのでlong型の変数、もしくはif文などの制御で判定してください。
(例)
lResult = stmt.executeInsert();
execSQLを使用した例
第1引数にSQL、第2引数にパラメータ(?に対する値の設定)を設定します。
パラメータを使用しない場合はnullとして渡しくてください。
(例)
super.db.execSQL(sSQL.toString(), arrayData);
※「super.db」としているのはclsDatabaseOpen」クラスを継承しているためです。
この「clsDatabaseOpen」では「SQLiteOpenHelper」クラスを継承しています。
そして「db」は「protected」にしています。
データベースの接続・切断を継承しているクラスは次のページを参考にしてください。
URL [http://abc3.me/computer/android/4/android-7-1.php] (クリックをすると開きます)
クラスの呼び元です。
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//databaseDrop();
//databaseCreate();
//databaseTransaction();
//databaseUpdate();
//databaseDelete();
databaseInsert();
//databaseSelect();
//databaseOpenClose();
//readFile();
}
private void databaseInsert()
{
int iResult = 0;
clsDatabaseInsert cls = new clsDatabaseInsert(this);
if (cls.DatabaseOpen() > 0)
{
cls = null;
Log.d("databaseOpenClose", "データ接続エラーが発生しました。");
return;
}
//通常のinsert
if(cls.testTest1() > 0)
{
cls = null;
Log.d("databaseInsert", "データ登録エラーが発生しました。");
return;
}
//パラメータを使用したinsert
if(cls.testTest2() > 0)
{
cls = null;
Log.d("databaseInsert", "データ登録エラーが発生しました。");
return;
}
if (cls.DatabaseClose() > 0)
{
cls = null;
Log.d("databaseOpenClose", "データ切断エラーが発生しました。");
return;
}
}
}
|
|
|