Android SQLiteでレコードの削除 と論理削除について
AndroidでSQLiteを使ったレコードの削除で、DELETE文を書いてもできなかったのでメモ
どうやらmoveToFirstを書かないと消えないようだ。何故かはわからない。
ちなみに sqlite delete androidで検索した
↓実際に書いたソース
Cursor cur = db.rawQuery("delete from ASSIGN " + "where id = ?", new String[]{String.valueOf(assignId)}); cur.moveToFirst();
あと、エンジニアの方に教えてもらったのが、論理削除と物理削除について
物理削除は、物理的に消してしまうこと。今回のDELETE文と同じ。
論理削除は、レコード自体を消すのではなくて、
フラグを作り、そのフラグによってレコードが削除されてる体にすること。
この場合はUPDATE文で削除フラグを1にすればいいのだと思う。
こうすることで、後でデータが必要になった時にはフラグを0に戻せば元通りにできる。
こういう考え方は現場入っているからこそ知れるのだろうなぁと関心した。
AndroidでNavigationBarとStatusBarを透過する
会社のPCに入れたソフトたち
はじめに
Qiitaのアドベントカレンダー2017に投稿することになったので、読みやすく編集し直しました。
qiita.com
まだまだ業務経験は浅いですが、一つでも役に立つソフトを紹介できればと思います。
※紹介しているのは全てフリーソフトです。
自己紹介
情報系の専門学校を出て、2017年4月に新卒でSESの会社に入社しました。
出向先では人事給与システムのアドオン開発をしています。
主にPL/SQLでストアドプロシジャーを書いたり、テストしたりしてます。
使用PC
CF-SZ5 Let's note
OS:Window7
メモリ4GB...遅くてイライラすることが多々。
画面が小さくて致命的。
入れたソフトたち
HeidiSQL
www.heidisql.com
PL/SQL関係ありませんが、SQLの勉強用に。
データベースやテーブルを作ったり、SELECT文書いたり、実験用です。
QTTabBar
QTTabBar - QuizoApps
標準のファイルエクスプローラーをGoogleChromeとかみたいにタブで表示できるようになる。
ウィンドウだらけにならないので、目的のフォルダのウィンドウを探すのが楽に。
とてつもなく便利。
WinMarge
WinMerge 日本語版
プログラムや設計書のマージにちょっとだけ使った。
Excelファイルもマージできる。
シートが全部つながってしまうのが不便だが。
qiita.com
Vimiun
chrome.google.com
Chromeの拡張機能
マウスを使わずにブラウジングできるのでとても捗る。
コマンドを少し覚えなくてはならないが、本当に捗るので。
CLaunch
Pyonkichi's page
ランチャーアプリ
主にメモやエクセルのファイルなどのショートカットを登録して使っている。
デスクトップをダブルクリックで起動する設定してみた。
デスクトップがきれいになるのでオススメ。
Launchy
Launchy: The Open Source Keystroke Launcher
ランチャーアプリ
alfledのWindows版みたいな感じ。
Hainと比較して見る予定。
Hainは起動がめちゃくちゃ遅くて私のPCではダメでした。
基本的にCLaunchとタスクバーに登録しているアプリで足りてるので、あまり使っていない。
Clibor
www.amunsnet.com
クリップボードアプリ
Ctrl二回押しで起動するようにしている。
コピペ箇所が多いときに、Ctrl+C連打して全部コピーしてからまとめてペーストなんかができて便利。
よく使うファイルパスやIDなどを定型文に登録したりもできる。
定型文に登録したものにショートカットを割り当てると更に便利に。
f.lux
justgetflux.com
ブルーライトカットアプリ
Letsnoteの明るさが微調整できないので青色を落とす手段に。
まぶしい光が苦手なので。
WinShot
スクリーンショットアプリ
テストの際にエビデンスを残すので、スクリーンショットをよく使います。
何回も同じ範囲を撮る場合、1度範囲矩形選択をすれば、
前回の矩形選択範囲を撮ることが出来るので便利です。
サクラエディタ
sakura-editor.sourceforge.net
Altキー押しながらマウスで範囲矩形選択できるのが便利。
ソースの整形に使う。
あまり使っていない。
Office Tab
Office Tab:Microsoft Office 2003-2016のタブウィンドウでマルチ文書を開けます。 | Extendoffice.com
Excelをよく使っていたのですが、大量にファイルを開くと目的のファイルを探すのに時間がかかってしまう。
タブ化することで、現在見ている画面から目的のファイルを見つけることができました。
重宝していました(無料期間は30日間)
GoogleKeep(ブラウザ版
ふとした時に、メモする用。
洗剤買わなきゃとか、なんでも。
会社PCが開けないときでも見れるように、スマホでや家のPCでも同じアカウントでログインしている。
GoogleDocment(ブラウザ版
用途はkeepと基本同じ。長文のときに使う。
週報を書かなければいけないのでDocumentに書いて保存しておく。
もし提出し忘れたとしても、スマホや家のPCからアクセスできる。
番外編
便利なハードたち
Logicool K380BK
Bluetoothキーボード
思ったより打ちづらい。特にコピペがしづらい。
書見台と一緒に購入。首が楽に。
スマホにも対応しているので、家に持って帰ったらもっと便利そう()
書見台
姿勢が悪くなり、首やら腰やら背中が痛くなったので、PCを立てるために購入。
サンワサプライというところのを買いました。
一緒にキーボードも購入して、まっすぐ前を見ながら作業が出来るようになりました。
体を大事に。
KindlePaperWhite
通勤時の読書が楽になりました。
満員電車なので。
まとめ
いろんなソフトを入れてみて、結構効率が良くなったと思います。
特にCliborが役に立ちました。定型文をよく使うので。
参考になったとか、これ以外に便利なソフトあるとか、コメント頂けたら嬉しいです!
Excelで年月のデータを年月日に変換する。
A1の201711というデータを2017/11/1にする場合は
=DATE(LEFT(A1,4),RIGHT(A1,2),1)
これでできた。
ちなみに月末にしたい場合は、「EOMONTH」という関数を使うと楽。
年月日のデータを月末にしてくれる。
=EOMONTH(DATE(LEFT(A1,4),RIGHT(A1,2),1),0)
Excelで前ゼロ埋めをする。
最近Excelの作業が多いのでメモ。
A列の数値データに前ゼロをつけたい場合は
TEXT(A1,"00000")
A1が1の場合は00001、
A1が1111の場合は01111になる。
A1が11111の場合は変化なし。
Excelでの日付の比較
会社でExcelの作業がありました。
IF文である日付以前のデータに印をつける文を書いたのですが、うまく機能せず少し嵌ったのでメモ
最初は
IF(A1<2017/11/24,.....)
と書いていた。
正しくは
IF(A1<DATE(2017,11,24),.....)
日付型に直してあげる必要がある。
PL/SQLで電話番号をハイフン区切りで格納する
- 編集中-
現在PL/SQLの勉強をしているのでメモ
今回は電話番号をハイフンで区切り、
市外局番、市内局番、局番
の3つに分けて配列に格納するコードを書きました。
(電話番号がxx-xxxx-xxxxの形式のもの以外は異常とみなし、先頭6桁と7桁〜11桁で分けたものを格納しています)
※変数の宣言などは省略されてます
使用している変数の説明
pTelNum -- 電話番号を格納
hCnt -- ハイフンをカウント
pNum -- 電話番号一文字を格納する変数
arrayNum -- 配列の場所
checkFlag -- 配列の中身のチェック (1→true 0→false
pTelNum := REC.AHI1_TN; -- 電話番号を格納
-- 電話番号がNULLの場合各配列にNULLを格納する
IF pTelNum IS NULL THEN
ca(1) := NULL;
ca(2) := NULL;
ca(3) := NULL;
ELSE
--電話番号をハイフン区切りで配列へ格納
FOR i IN 1..LENGTH(pTelNum) LOOP
pNum := SUBSTR(pTelNum, i, 1);
IF pNum = '-' THEN
hCnt := hCnt + 1;
IF arrayNum >= 3 THEN
IF pNum = '-' THEN
CONTINUE;
ELSE
ca(3) := (ca(3) || pNum);
END IF;
ELSE
arrayNum := arrayNum + 1;
END IF;
ELSE
ca(arrayNum) := (ca(arrayNum) || pNum);
END IF;
END LOOP;
--配列の中身をチェック
IF ca(1) IS NOT NULL AND ca(2) IS NOT NULL AND ca(3) IS NOT NULL AND hCnt = 2 THEN
checkFlag := 1;
ELSE
checkFlag := 0;
END IF;
--チェックでNGだった場合、整形して値を配列へ格納
IF checkFlag = 0 OR (checkFlag = 1 AND LENGTH(ca(1)) > 6
OR LENGTH(ca(2)) > 4 OR LENGTH(ca(3)) > 4) THEN
telNum := REPLACE(pTelNum, '-', '');
ca(1) := SUBSTR(telNum, 1, 6, '');
ca(2) := SUBSTR(telNum, 7, 4, '');
ca(3) := NULL;
大まかな流れとして、
1. とってきた電話番号がNULLじゃない確認
NULLの場合は配列全てにNULLをいれる
2. 電話番号を一文字ずつ配列に格納
ハイフンが来た場合には、飛ばして次回からは二番目の配列に電話番号を格納する
3. 配列にハイフンを抜いた3塊の電話番号が入ったら終了
4.
説明など随時更新します