主にRPA、Androidアプリ開発について投稿しています。メモ書きです。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
long id = db.insert("PERSON",null,values);Update(Delete)の場合
if(id == -1){
//失敗した場合
}
int updateRows = db.update("PERSON",values,"NAME = ?",new String[]{"田中"});
if(updateRows == 0){
//更新されなかった場合
}
public class SQLiteDBHelper extends SQLiteOpenHelper {コンストラクタを作成
public SQLiteDBHelper(Context context){OnCreateでTbl作成メソッドへ
super(context,DB_NAME,null,DB_VERSION);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
this.db = db;
createInputTbl();
createMasterTbl();
}
String createTbl_person =Activityでの呼び出しはこんな感じ
"CREATE TABLE " + "PERSON" + " ( " +
"ID" + " INTEGER PRIMARY KEY AUTOINCREMENT PRIMARY KEY, " +
"NAME" + " TEXT NOT NULL, " +
"AGE" + " INTEGER, " +
"DATE_ADDED" + "TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL" +
")";
db.execSQL(createTbl_person);
SQLiteDBHelper helper = new SQLiteDBHelper(this);
SQLiteDatabase db = helper.getReadableDatabase();
登録データContentValues values = new ContentValues();
values.put(nameColumn[0],data[0]);insert
helper.insertTbl(db,"PERSON",values);closeをわすれずに
db.close();
dbの削除はこんな感じthis.deleteDatabase(helper.getDatabaseName());
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>それでも変わらぬ
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
public static String[] getExternalStorageDirectories(Context context) {https://akira-watson.com/android/sdcard_path.html
List<String> results = new ArrayList<>();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
File[] externalDirs = context.getExternalFilesDirs(null);
for (File file : externalDirs) {
String path = file.getPath().split("/Android")[0];
boolean addPath = false;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
addPath = Environment.isExternalStorageRemovable(file);
}
else{
addPath = Environment.MEDIA_MOUNTED.equals(EnvironmentCompat.getStorageState(file));
}
if(addPath){
results.add(path);
}
}
}
if(results.isEmpty()) {
String output = "";
try {
final Process process = new ProcessBuilder().command("mount | grep /dev/block/vold")
.redirectErrorStream(true).start();
process.waitFor();
final InputStream is = process.getInputStream();
final byte[] buffer = new byte[1024];
while (is.read(buffer) != -1) {
output = output + new String(buffer);
}
is.close();
} catch (final Exception e) {
e.printStackTrace();
}
if(!output.trim().isEmpty()) {
String devicePoints[] = output.split("\n");
for(String voldPoint: devicePoints) {
results.add(voldPoint.split(" ")[2]);
}
}
}
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
for (int i = 0; i < results.size(); i++) {
if (!results.get(i).toLowerCase().matches(".*[0-9a-f]{4}[-][0-9a-f]{4}")) {
results.remove(i--);
}
}
} else {
for (int i = 0; i < results.size(); i++) {
if (!results.get(i).toLowerCase().contains("ext") && !results.get(i).toLowerCase().contains("sdcard")) {
results.remove(i--);
}
}
}
String[] storageDirectories = new String[results.size()];
for(int i=0; i<results.size(); ++i) storageDirectories[i] = results.get(i);
return storageDirectories;
}
if (bundle == null) {
activity.getSupportFragmentManager().beginTransaction()
.add(R.id.keyContainer, new TenkeyFragment())
.commit();
TextView.OnClickListener OnClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().beginTransaction().remove(SiteInfoFragment.this).commit();
//または
getFragmentManager().popBackStack();
}
};
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if(convertView ==null) {
convertView = getGenericView(0);
}
TextView tvSiteName = convertView.findViewById(R.id.tvSiteName);
tvSiteName.setText(groups.get(groupPosition));
}catch (Exception e){
//クラス名.メソッド名:原因
Log.e(e.getStackTrace()[1].getClassName() + "." + e.getStackTrace()[1].getMethodName(),e.getMessage());
//×:java.lang.Integer.parseInt:For input string:"s"
Log.e(e.getStackTrace()[2].getClassName() + "." + e.getStackTrace()[2].getMethodName(),e.getLocalizedMessage());//エラー箇所
//〇
String str;
//クラス名の出力
str = new Object(){}.getClass().getName();
Log.e("1.Class:",str);//△:末尾に$nがつく
str = new Object(){}.getClass().getEnclosingClass().getName();
Log.e("2.Class:",str);//〇
str = Thread.currentThread().getStackTrace()[1].getClassName(); //スタックトレースから取得
Log.e("3.Class:",str);//×:java.lang.Thread
//メソッド名の出力
str = new Object(){}.getClass().getEnclosingMethod().getName(); //
Log.e("1.Method:",str);//〇
str = Thread.currentThread().getStackTrace()[1].getMethodName();
Log.e("2.Method:",str);//×:getStackTrace
StackTraceElement[] ste = e.getStackTrace();
Log.e("StackTraceElement[1]","-------------------------------");
Log.e("FileName:",ste[1].getFileName());
//Integer.jaa
Log.e("ClassName:",ste[1].getClassName());
//java.lang.Integer
Log.e("MethodName:",ste[1].getMethodName());
//parseInt
Log.e("LineNumber:",Integer.toString(ste[1].getLineNumber()));
//556
Log.e("StackTraceElement[2]","-------------------------------");
Log.e("FileName:",ste[2].getFileName());
//〇
Log.e("ClassName:",ste[2].getClassName());
//〇:パッケージ名.クラス名
Log.e("MethodName:",ste[2].getMethodName());
//〇
Log.e("LineNumber:",Integer.toString(ste[2].getLineNumber()));
//〇
e.printStackTrace();
Log.e("getMessage",e.getMessage());
//For input string:"s"
Log.e("getLocalizedMessage()",e.getLocalizedMessage());
//For input string:"s"
Log.e("getStackTrace()[2].toString()",e.getStackTrace()[2].toString());
Log.e("getClass.getSimpleName+getMessage",e.getClass().getSimpleName()+":"+e.getMessage());
}
}catch (Exception e){getStackTrace()[1]と[2]の違いは要調査。
Log.e(e.getStackTrace()[1].getClassName() + "." + e.getStackTrace()[1].getMethodName(),e.getMessage());
Log.e(e.getStackTrace()[2].getClassName() + "." + e.getStackTrace()[2].getMethodName(),e.getLocalizedMessage());
}