2015年8月16日日曜日

SQLiteに追加する

すでにSQLiteConnection SQLiteConnにデータベースが開かれているとする。

{
    string[][] Adds =
    {
        new string[] { "422100000", "422175000", "業務用ch5", "NFM", "Unidentified", "", "Unidentified", "0", "0", "Blackman-Harris 4", "8000", "440", "1", "82", "600", "", "2015-08-15T00:00:00", "0", "0" },
    };
            
    using (SQLiteTransaction sqlt = SQLiteConn.BeginTransaction())
    {
        using (SQLiteCommand command = SQLiteConn.CreateCommand())
        {
            foreach (string []Add in Adds)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("insert into Data('Frequency','Center','Description','Mode','Protocol','Call Sign','Service','Shift Enabled','Shift','Filter Type','Filter Bandwidth','Filter Order','Squelch Enabled','Squelch','CW Shift','Notes','Date','Locked','Flagged') values(");

                foreach (string s in Add)
                {
                    sb.Append("'");
                    sb.Append(s);
                    sb.Append("',");
                }

                sb.Remove(sb.Length - 1, 1);
                sb.Append(")");

                //MessageBox.Show(sb.ToString());
                //Clipboard.SetText(sb.ToString());

                command.CommandText = sb.ToString();
                command.ExecuteNonQuery();
            }
        }
        sqlt.Commit();
    }

    MessageBox.Show("ok");
}

レコードを追加するにはSQLiteCommandのCommandTextプロパテのsetを使うらしい。"insert into Data"でDataテーブルに追加できる。要素名はテーブル名の後ろのカッコ内にカンマ区切りで書く。要素名は必ずしもシングルクォーテーションで囲む必要はないが、半角スペースとかが入る場合はシングルクォーテーションで囲む必要がある。とりあえずは囲んでおいたほうが無難。
データについては"values"のあとに書き込む。

今までデータを扱うようなプログラムを書いたことがなかったので、かなり苦労してる。まぁこれをちゃんと動くようにできれば別のものを作るときにはもっと楽にできる と考えて作ってるわけだが。最初っから趣味でプログラムを書いてると、大規模なプログラムになった時に大変だねぇ。。。

0 件のコメント:

コメントを投稿