ひとりも見捨てないことを、あきらめない

学校教育、社会教育、数学、技術家庭科、Youtube、EdTech、ICT、プログラミング、その他

データベースへのアクセス 01/17 金

 現在作成しているアプリでは、データベースは SQLite を使用しています。これは、「あとで、処理内容を確認したい」というときに、SQLite であれば、データファイルを保存しておけば、そのファイルを開くだけで過去のデータにアクセスできるからです。

 具体的に、データベースにアクセスするための方法をメモしておきます。以下のメモは、他にも非常に多くの方が、ブログ等で紹介しておられますので、特に新しいものではありません。

 まず、「もしも、データベースそのものが存在しなければ、データベースを作る」というのは、次のようにします。

using var conn = new SQLiteConnection("DataSource=" + DataFileName);
conn.Open();
SQLiteCommand comm = conn.CreateCommand();
string Src;

Src = "create table if not exist TestTable ( id primary key, name not null, pic BLOB)";
comm.CommandText = Src;
comm.ExecuteNonQuery();

comm.Dispose();
conn.Close();
conn.Dispose();

 これで、ID と名前と顔写真のデータベースが作成できました。

 次に、「データベースを開いて、何らかの処理を行う」というのは、次のようにします。

using var conn = new SQLiteConnection("DataSource=" + DataFileName);
conn.Open();
SQLiteCommand comm = conn.CreateCommand();
string Src;

Src = "select id, name form TestTable";
comm.CommandText = Src;
SQLiteDataReader reader = comm.ExecuteReader();
if (reader.HasRows)
{
	while (reader.Read())
	{
		int myid;
		string myname;
		myid = reader.GetInt32(0);
		myname = reader.GetString(1);
	}
}

comm.Dispose();
conn.Close();
conn.Dispose();

 ここで、上のふたつで実際にデータベースを操作しているのは、次の部分です。

Src = "create table if not exist TestTable ( id primary key, name not null, pic BLOB)";
Src = "select id, name form TestTable";

 これら文を理解するためには、プログラムそのものを理解するのとは、別の事柄(つまり、データベースとは、そもそも何で、どのように処理を行うのかという事柄)を理解しなければなりません。そういう意味では、単にプログラムを作るよりも、難しい課題だと思います。

 ただ、現実的に皆さんに使っていただけるようなアプリを作るためには、データベース的な考え方は、避けて通れません。というよりも、「そもそもデータベースとは何か」、「どうすれば便利に使うことができるのか」という事柄は、多くの人が理解すべきことだろうなあと、私は思っています。

f:id:takase_hiroyuki:20191123160855p:plain