mikan's technical note

仕事&趣味で実験した小技の備忘録です(Linux,windows,DOS等)

MENU

【C言語】SQLite3 で OPEN,SELECT,CLOSE(VisualStudio2017)

MFC & SQLite3 の勉強がてら VS2017でツールを作成中
とりあえず SELECT 関連のコードをメモ

f:id:myerss555:20190218034235j:plain

f:id:myerss555:20190218033003j:plain

	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 を使用

f:id:myerss555:20190211044033p:plain

f:id:myerss555:20190211044053p:plain

f:id:myerss555:20190211044116p:plain

f:id:myerss555:20190211044131p:plain

まさかの初期不良(泣)

ワクワクしながら CPU と メモリ を取付け、最小構成での起動確認!
最小といってもあとは SSD だけですが
電源ボタンを押しても電源が入らない
アダプタもマザーのコネクタもちゃんと刺さってるのにLEDも光らないファンも回りません
なんでーーー
衝動買いへの天罰なのか(T.T)
良いのか悪いのかこういうときは小型ベアボーンは便利ですね持ち運びが楽ちんです(汗)
ショップでもやはり電源が入らず A300 まるっと交換となりました
もちろんその場で起動確認までして受け取って帰路へ(ふぅ

さぁ気を取り直して組み立て再開!

ネジを4本外します
※小さいので騙されましたがネジ穴は普通サイズなので大きなプラスドライバでないと舐める危険性大ですよ
f:id:myerss555:20190211044303p:plain

引き出します
f:id:myerss555:20190211044500p:plain

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

Ryzen 3 2200G と A300 付属の CPU クーラーを取付
f:id:myerss555:20190211044638p:plain

メモリを取付
f:id:myerss555:20190211044744p:plain

最初に抜いたコネクタを繋げます
f:id:myerss555:20190211044841p:plain

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

無事BIOS画面が出ました
f:id:myerss555:20190211045452p:plain

電源オフし、電源等を抜いてひっくり返して SSD を取付(ネジ不要です)
f:id:myerss555:20190211044909p:plain

A300 付属の専用コネクタでマザーと SSD を繋げます
f:id:myerss555:20190211044957p:plain

ケースに戻します
f:id:myerss555:20190211045132p:plain

戻し終わったところ
f:id:myerss555:20190211045154p:plain

ネジを4本締めて完成!(軽く締めましょう)
Windows10 USB を挿して電源オン
f:id:myerss555:20190211050003p:plain

インストール開始
f:id:myerss555:20190211050142p:plain

インストール中
f:id:myerss555:20190211050228p:plain

インストール完了!インストール開始から約7分です速い!
f:id:myerss555:20190211050243p:plain

総括

消費電力はワットチェッカー
アイドル時13~14W
うちの i5-8500 の約半分!
※起動時は一瞬48Wまで上がります

i5-8500 を封印してこっちをサブにしようかな小さくて場所取らないし(^^)

f:id:myerss555:20190214221520p:plain

f:id:myerss555:20190214221553p:plain

f:id:myerss555:20190214221612p:plain

f:id:myerss555:20190211051114j:plain