SQLiteのINSERT、UPDATE、DELETEが遅い

SQLiteでINSERT、UPDATE、DELETEが遅かったのでいろいろと調べた結果、トランザクションを指定する必要があることが分かりました。

トランザクションを使用しないでINSERT、UPDATE、DELETEを行うと処理にとても時間がかかりますが、トランザクションを使用した場合は処理時間が早くなりました。

SQLiteでINSERT、UPDATE、DELETEを行う場合は「BEGIN TRANSACTION」、「COMMIT」を忘れずに。


Excelでデータベースを利用(sqlite)

Excelは数式でいろいろな計算ができますが、複雑なデータの集計などを数式で実装するのは難しいです。

そのため、Excelで簡単にデータベースを使用できないかと調べたところ、「SQLiteForExcel」という便利なものがあることがわかりました。
https://github.com/govert/SQLiteForExcel

上記サイトからのダウンロードの方法は「Clone or download」ボタンを押下して「Download ZIP」ボタンを押下すればダウンロードできます。

Distributionフォルダにある「SQLiteForExcel.xls」、「SQLiteForExcel_64.xlsm」の標準モジュールにSQLiteを操作するための関数が登録されています。


ASPでクエリストリングのエンコード

下記のように実装すると、追加したクエリパラメータを自動で繋げて、その上URLエンコードもされる。

NameValueCollection nc = HttpUtility.ParseQueryString(string.Empty, Encoding.UTF8);
// エンコード指定しない場合
// NameValueCollection nc = HttpUtility.ParseQueryString(string.Empty);

nc.Add("Param1", "あああ");
nc.Add("Param2", "aaa");

Response.Redirect("test.aspx?" + nc.ToString());

ASPでカスタムWebControlの配置

Webサイトの場合とプロジェクトの場合で以下のパターンがあります。

【Webサイトの場合】
1.WebControlを継承したクラスをApp_Codeに作成

namespace WebSite2
{
	public class Test : GridView
	{
	}
}

2.使用するaspに配置

<%@ Register TagPrefix="custom" namespace="WebSite2" %>
<custom:Test runat="server"></custom:Test>

【C#プロジェクトの場合】
1.AssemblyInfo.csにタグとnamespaceの割付情報を追記

//WebSite2というnamespaceをcustomタグに割付
[assembly: TagPrefix("WebSite2", "custom")]

2.WebControlを継承したクラスを上記で指定したnamespaceに作成

namespace WebSite2
{
	public class Test : GridView
	{
	}
}

3.使用するaspに配置

<%@ Register Assembly="WebSite2" TagPrefix="custom" Namespace="WebSite2"%>
<custom:Test ID="Test1" runat="server" />

DataTableから重複行を削除

DataTableの中の重複行を削除する方法は下記の通りです。

Datatable tbl;
tbl.DefaultView.ToTable(false, “col1”, “col2”);
※ToTableメソッドを使用する。第一引数が重複可否の設定(true:重複可、false:重複不可)、第二引数以降は抽出対象となる列名