update
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
import android.util.Log;
public class clsDatabaseUpdate extends clsDatabaseOpen {
clsDatabaseUpdate(Context context)
{
super(context);
}
public int testTest1()
{
int iResult = 0;
StringBuilder sSQL = new StringBuilder();
sSQL.append(" update tbl1");
sSQL.append(" set");
sSQL.append(" fld2 = 10.05");
sSQL.append(",fld3 = 'a105'");
sSQL.append(" where");
sSQL.append(" fld1 = 10");
Log.d("sSQL", sSQL.toString());
SQLiteStatement stmt = null;
try
{
Log.d("executeUpdateDelete","start");
stmt = super.db.compileStatement(sSQL.toString());
iResult = stmt.executeUpdateDelete();
Log.d("iResult",String.valueOf(iResult));
if(iResult < 0)
{
//updateエラー
return 2;
}
Log.d("executeUpdateDelete","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;
}
public int testTest2()
{
int iResult = 0;
StringBuilder sSQL = new StringBuilder();
sSQL.append(" update tbl1");
sSQL.append(" set");
sSQL.append(" fld2 = ?");
sSQL.append(",fld3 = ?");
sSQL.append(" where");
sSQL.append(" fld1 = 11");
Log.d("sSQL", sSQL.toString());
String[] arrayData =new String[]{"11.05", "a1105"};
Log.d("arrayData.length",String.valueOf(arrayData.length));
try
{
Log.d("execSQL","start");
super.db.execSQL(sSQL.toString(), arrayData);
Log.d("execSQL","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());
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());
ステートメントのexecuteUpdateDeleteメソッドから登録したSQLを実行しています。
戻り値を取得できるのでint型の変数、もしくはif文などの制御で判定してください。
(例)
iResult = stmt.executeUpdateDelete();
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 databaseUpdate()
{
int iResult = 0;
clsDatabaseUpdate cls = new clsDatabaseUpdate(this);
if (cls.DatabaseOpen() > 0)
{
cls = null;
Log.d("databaseUpdate", "データ接続エラーが発生しました。");
return;
}
//通常のupdate
if(cls.testTest1() > 0)
{
cls = null;
Log.d("databaseUpdate", "データ更新エラーが発生しました。");
return;
}
//パラメータを使用したケース
if(cls.testTest2() > 0)
{
cls = null;
Log.d("databaseUpdate", "データ更新エラーが発生しました。");
return;
}
if (cls.DatabaseClose() > 0)
{
cls = null;
Log.d("databaseUpdate", "データ切断エラーが発生しました。");
return;
}
}
}
|
|
|