【C言語】SQLite3 で OPEN,SELECT,CLOSE(VisualStudio2017)
MFC & SQLite3 の勉強がてら VS2017でツールを作成中
とりあえず SELECT 関連のコードをメモ


typedef struct tag_ListDb
{
// TABLE-GAME
int iGame_Id;
CString strGameTitleString;
CString strPublisherName;
int iReleaseYear;
int iPlayers;
CString strRatingImage;
CString strGameManualQrImage;
int iLinkGameId;
// TABLE-DISC
int iDiscNumber;
CString strBaseName;
} stListDb;
stListDb m_pstListDb[MAX_LIST_DB];
int m_iListDbCnt;
char m_ExecPath[MAX_PATH]; // 実行パス
sqlite3 *m_pDB;
char *m_DBFileName = "regional_custom.db";
sqlite3_stmt *m_pStmt = NULL;
int iRet;
char szPath[MAX_PATH];
char szDrive[MAX_PATH];
char szDir[MAX_PATH];
char szFname[MAX_PATH];
char szExt[MAX_PATH];
m_iListDbCnt = 0;
// 変換用
CStringA strWork;
std::string s;
std::string sjis;
// 実行ファイルのフルパスを取得
GetModuleFileNameA(NULL, szPath, sizeof(szPath));
//パス名を構成要素に分解
_splitpath(szPath, szDrive, szDir, szFname, szExt);
// 実行パスを取得
strcpy(m_ExecPath, szDir);
// DBファイル名を作成(フルパス)
sprintf(szPath, "%s%s", szDir, m_DBFileName);
// DB(GAME)のオープン
iRet = sqlite3_open(szPath, &m_pDB);
if (iRet != SQLITE_OK) {
MessageBox(_T("OPEN ERROR!"), _T("SqlLite "), MB_ICONSTOP | MB_OK);
return FALSE;
}
// SQL 編集
iRet = sqlite3_prepare_v2(m_pDB,
"SELECT * FROM game ORDER BY game_id", -1, &m_pStmt, NULL);
if (iRet != SQLITE_OK) {
MessageBox(_T("PREPARE ERROR!"), _T("SqlLite "), MB_ICONSTOP | MB_OK);
iRet = sqlite3_close(m_pDB);
return FALSE;
}
// SQL 実行
int i;
for (i = 0; ; i++) {
iRet = (iRet = sqlite3_step(m_pStmt));
if (SQLITE_ROW != iRet) {
break;
}
// GAME_ID
m_pstListDb[i].iGame_Id = sqlite3_column_int(m_pStmt, 0);
// GAME_TITLE_STRING(SELECT結果から項目取得、UTF8->SJIS変換)
strWork = sqlite3_column_text(m_pStmt, 1);
s = strWork;
sjis = UTF8toSjis(s);
m_pstListDb[i].strGameTitleString = sjis.c_str();
// PUBLISHER_NAME(SELECT結果から項目取得、UTF8->SJIS変換)
strWork = sqlite3_column_text(m_pStmt, 2);
s = strWork;
sjis = UTF8toSjis(s);
m_pstListDb[i].strPublisherName = sjis.c_str();
// RELEASE_YEAR
m_pstListDb[i].iReleaseYear = sqlite3_column_int(m_pStmt, 3);
// PLAYERS
m_pstListDb[i].iPlayers = sqlite3_column_int(m_pStmt, 4);
// RATING_IMAGE(SELECT結果から項目取得、UTF8->SJIS変換)
strWork = sqlite3_column_text(m_pStmt, 5);
s = strWork;
sjis = UTF8toSjis(s);
m_pstListDb[i].strRatingImage = sjis.c_str();
// GAME_MANUAL_QR_IMAGE(SELECT結果から項目取得、UTF8->SJIS変換)
strWork = sqlite3_column_text(m_pStmt, 6);
s = strWork;
sjis = UTF8toSjis(s);
m_pstListDb[i].strGameManualQrImage = sjis.c_str();
// LINK_GAME_ID
m_pstListDb[i].iLinkGameId = sqlite3_column_int(m_pStmt, 7);
m_iListDbCnt++;
}
m_pstListDb[i].iGame_Id = 0;
// SQL 解放
iRet = sqlite3_finalize(m_pStmt);
m_pStmt = NULL;
// DBのクローズ
iRet = sqlite3_close(m_pDB);
if (iRet != SQLITE_OK) {
MessageBox(_T("CLOSE ERROR!"), _T("SqlLite"), MB_ICONSTOP | MB_OK);
return FALSE;
}
【ぼくのPC大改造計画】ASRock DeskMini A300 でミニマム快適マシンを組む
衝動買い!
AMD 版の DeskMini が発売されたことは知っていました
気にはなっていたものの既に Core i9-9900K と Core i5-8500 そしてテレビ用の Ryzen 5 2400G があるのでこれ以上増やしても。。。
それにけっこう人気らしく初回分はほぼ売り切れている様子
無いものはしょうがない
テレビPC用のHDDでも買おうとPCショップへ行ったのが間違いだった
まだ在庫がある!
30秒悩んで買いましたよw
お買い物リスト
購入したパーツは
ASRock DeskMini A300
CFD DeskMini VESA MOUNT KIT(DeskMini 110用)
AMD Rizen 3 2200G
crusial DDR4 8GB (ノート用メモリ)
SSD は手持ち(新品)の crucial MX500 500GB を使用




まさかの初期不良(泣)
ワクワクしながら CPU と メモリ を取付け、最小構成での起動確認!
最小といってもあとは SSD だけですが
電源ボタンを押しても電源が入らない
アダプタもマザーのコネクタもちゃんと刺さってるのにLEDも光らないファンも回りません
なんでーーー
衝動買いへの天罰なのか(T.T)
良いのか悪いのかこういうときは小型ベアボーンは便利ですね持ち運びが楽ちんです(汗)
ショップでもやはり電源が入らず A300 まるっと交換となりました
もちろんその場で起動確認までして受け取って帰路へ(ふぅ
さぁ気を取り直して組み立て再開!
ネジを4本外します
※小さいので騙されましたがネジ穴は普通サイズなので大きなプラスドライバでないと舐める危険性大ですよ

引き出します

作業しやすいようにケースと繋がっているコネクタを抜きます(抜かなくても可能です)

Ryzen 3 2200G と A300 付属の CPU クーラーを取付

メモリを取付

最初に抜いたコネクタを繋げます

電源アダプタ、HDMI、キーボードを繋げて電源オン
起動確認をします(SSD はまだ繋げない)

無事BIOS画面が出ました

電源オフし、電源等を抜いてひっくり返して SSD を取付(ネジ不要です)

A300 付属の専用コネクタでマザーと SSD を繋げます

ケースに戻します

戻し終わったところ

ネジを4本締めて完成!(軽く締めましょう)
Windows10 USB を挿して電源オン

インストール開始

インストール中

インストール完了!インストール開始から約7分です速い!

総括
消費電力はワットチェッカーで
アイドル時13~14W
うちの i5-8500 の約半分!
※起動時は一瞬48Wまで上がります
i5-8500 を封印してこっちをサブにしようかな小さくて場所取らないし(^^)



