SQLiteを使用した単純なTcl / Tk Windowsアプリケーションの作成

尊敬されるhabrasocietyへのこんにちは! ここでは、非常に快適で使いやすいプログラミング言語TCLに関する少しの情報を紹介します。特にTCLに慣れ始めたばかりの人には特に役立ちます。 このような迷惑な誤解を正すために、実行可能な貢献をしようと思います。



前文

私は研究所で仕事をしていました。一定量の構造化されたデータで動作する小さなアプリケーションを作成する実験室の仕事として。 アプリケーションは、インタープリター、データベース、フレームワーク、または追加ソフトウェアのインストールを必要とせずに、Windowsで実行する必要があります。 データ構造は、リレーショナルデータベースに保存すると便利です。 PLをより自由に選択でき、どのコンピューターでも簡単に起動できるという要件がないため、習慣からすべてをPHP + MySQLで記述しますが、ここでは他の方法を探す必要がありました。

私の仲間にこの問題を解決する方法を尋ねた後、私は彼らがストレージとしてcsvのようなファイルを使用してDelphi / Visual Basicで主に書いていることがわかりました。 かさばるシステムを使用してSQLを拒否したくありませんでした。 そしてインスピレーションが生まれました:しかし、私は職場でほぼ毎日TCLを使用しています! 情報を簡単に検索したところ、問題を解決するのに最適であることがわかりました。



TCLコードをWindows実行可能ファイルに変換する

TCLはインタープリター言語です。 ただし、tclコードから実行可能ファイルTkWrapを作成できるツールがあります。 インタープリターとソースコードを1つのファイルにまとめ、必要な便利な移植性を提供します。

彼との作業は非常に簡単です。

  1. TkWrapのダウンロードと解凍
  2. 結果のアーカイブには3つのファイルがあります。fullwrap.exeに興味があります。 SQLiteでの作業をサポートするのはそれだけです。 実行: fullwrap.exe hello.tcl -o hello.exe





    hello.tclは、ソースコードがあらかじめ用意されたファイルです。hello.exeは、出力で取得する実行可能ファイルの名前です。
  3. 作成されたhello.exeを実行し、完了した作業の結果を楽しみます。
もちろん、賞賛に値するものを得るためには、まず何かを書く必要があります。 次に、TCLコードについて説明します。



TCLからSQLiteを操作する

SQLiteは、軽量の組み込みリレーショナルデータベースです (Wikipediaから引用)。 これは、データベースサーバーを起動することなく、SQLのすべての機能を簡単に使用できることを意味します。 必要なもの。

TCLのSQLiteを使用した作業の詳細な説明は、公式のSQLite Webサイトにあります。 主なポイントの無料翻訳を提供します。

sqlite3 dbcmd database-name



コマンドは、データベース名データベースに接続します(存在しない場合は自動的に作成されます)。 dbcmdは、発明した接続識別子です。 このコマンドを実行すると、dbcmdコマンドがさまざまな方法で使用可能になります(合計で22種類あります)。 たとえば、最も人気のあるevalのみを考えます。

dbcmd eval sql ?array-name ? ?script?





このコマンドはsqlコードsqlを実行し、最後のパラメーターが省略された場合、実行結果を返します。 (フェッチするときに)行を調べるには、次のようなものを使用できます。

db1 eval {SELECT * FROM t1 ORDER BY a} values {

parray values

puts ""

}






テーブルt1の各行(もちろん、このために存在する必要があります)には、この行の値を含む値の連想配列が作成され、表示されます。



私たちはアプリケーションを書いています

したがって、例:Tcl / Tk上の小さなアプリケーションで、ourdbデータベースに対して任意のsql-requestを実行できます。

proc do_query {} {

upvar query_res query_res

set ret [query [.querytext get 0.0 end]]

set query_res [lindex $ret 1]

if {[lindex $ret 0] !=0} {

.res configure -fg red ;# ,

} {

.res configure -fg black

}

}



proc query {text} { ;# sql- , (0 ) :

upvar ourdb ourdb

set errcode [catch {ourdb eval $text} ret]



return [list $errcode $ret]

}

sqlite3 ourdb ourdb;#

wm title . " SQLite"

label .query -text " ourdb:" -compound center

text .querytext -width 100 -height 6

button .execute -text " " -command {do_query}



label .restitle -text ":" -compound center

label .res -textvariable query_res -wraplength 200

button .exit -text -command exit

. configure -padx 10 -pady 10 ;#

pack .query .querytext .execute .restitle .res .exit -expand yes ;#







このコードを保存し、上記のTkWrapperを設定したら、アプリケーションを取得します。





参照資料

TCLの詳細については、 http//tmml.sourceforge.net/doc/tcl/をご覧ください。

Tkを使用したグラフィカルインターフェイスの作成について: http : //linux.yaroslavl.ru/docs/prog/tcltk/tk.html



All Articles