SQLite
の編集
Top
/ SQLite
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
10の質問
ABC予想
AI
AI API
AI プロンプト
AIでつかわれているtransformerのまとめ
AIの話題
ANTLR
ANTLR v3 FAQ よくある質問
ANTLR 独学
ANTLR4 独学
ANTLRでOracleのDDLを解析してみる
ANTLRチュートリアル
AOP
API
ARMマイコン基盤
ATOM SHELL理論
Access VBAメモ
Access-Control-Allow-Origin
AndroidとTensorflow
Android開発
Android開発 入門
AngularJS
Anko
Apache Bench
ArchUnitを学ぶ
Axiosとは
Axis2
BI Publisherで始めるデータ駆動型レポート作成
BPMNの勉強
BackTrack4
Blog from iPhone
Bootstrapとは
BracketName
C3 AI Applications
C3 AI エクスマキナ
CSS備忘録
CentOS
ChatGPTの話題
Chevrotainのパーサメソッド
Chevrotain一覧
Chromeエクステンション
Cocoa Touch Static Library
CoffeeScript
Confluent Control Centerやってみる
C言語でオブジェクト志向な記述方法
DDD ドメイン駆動設計
DDL生成ツール
DJUnit
DMM.comのAPIとか
DOSコマンドメモ
Dashcode
DeepFloyd IF
Dockerが動かない場合の対処
ES2015
Eclipse Monkey
Eclipse Plugin
Eclipseの色設定
Eclipse使いがXCode使い初めて知りたいこと
ElasticMQメモ
Elixir
Emmet
Erlangメモ
ExcelファイルをAIに読ませる
Exceptionを見やすく
Expression Tree
FLEX
FLEX リフレクション
Fisheye
FlashやJavascriptを使った演出
FormattingRules
FrontPage
GAE
GAE Data Store API
GENERAL SQL PARSER JAVA を試してみる
GLOBAL
GPT4ALL
GQL
GUIからMacPortsを管理するアプリケーション - Porticus
Generative Adversarial Networks
Gin JavaScriptで構文解析
Git Blame
GitHubアクションを使ったトロイの木馬のまとめ
GitLab
GitLabRunnerを増やす
GitLabでPlantUML使ってみる
GitLabでプロジェクト管理する
GitLabの機能をそのまま使って認証システム作ったらどこまでできる?
GitLabサーバインストールとメンテ注意事項
GitとAntとSpringとJUnit
Google Cloud Platform
Googleの裏技
Google認定プロジェクトマネージャの勉強メモ
Grails
GraphQL
HTM 階層型時間メモリ
HTML スクレイピング
HTML パース
HTML5
HTML5 Canvas
Hadoop
Help
If Then Maybe プログラミング
Inkscape script
InterWiki
InterWikiName
InterWikiSandBox
JAVAの記事一覧
JBoss
JDBC テーブル一覧を得る
JDBC カラム一覧を得る
JDT eclipse
JGRIB
JHIPSTER JDL
JHIPSTER OpenAPI
JHIPSTER エンティティをフィルタリングする
JHIPSTER6.1.2
JHIPSTERでスマホサイト
JHIPSTERのBLUEPRINTを作る
JHIPSTER一覧
JHipster
JHipster API FirstDepelop
JHipster エンティティを更新する
JHipster7をつかってみる
JHipsterでBuleprintを使いこなす
JHipsterのコード生成を改造
JHipsterのプロジェクトをGitLabでCI/CDする
JHipsterのプロジェクトをデプロイする
JMeter
JOOQとは
JSFとStruts
JSqlParser
Java Closure
Java Compiler API
Java Function
Java SQL Parserを調査する
Java Spring AOP
Java Spriteを設計してみる
Java オブジェクトのダンプ
Java ドラックできる曲線
Java 備忘録
Java 文字化け
Java11以降のJRE
Java7サンプルコード
JavaFx
JavaScriptでパーサを作る Chevrotain
Javaasist 動的にクラスを編集
Javascript グラフィックライブラリ
Javascript コーディングパターン
Javascript界隈
Javassist
JavaでSVG
Javaで関数型で引数をとる
JavaのジェネリクスTip
Javaのラムダ式
Javaの有名なライブラリ紹介
Javaは、IDEのテンプレートを使いこなせばいいよ
Javaプログラマ向けモナド
Javaメモリリーク
Jenkins
Jenkins(Hudson)メモ
Jestとは
Jhipsterマイグレーション
Json Yaml Xml Hash Scala
Kafka REST Proxy さわってみる
Kotolin
LDAPサーバをdockerで立ち上げる
Linux メモ
LiquiBaseとは
Lombok
MDBをコンパクトにするVBA
MQL5 小作品
MT4
MT5 EA
MYSQL
MacTool
Macにしゃべらせる
Mac用のメモ
Mattermostを使ってオンプレミスでチャット環境を作る
Maven
Mementoパターン
MenuBar
NILScript
NetBeanでプロファイル
Network Service Desk Engineer
Node-RED
Node-Red
NumPy
OQL オブジェクト問い合わせ言語
OSコマンドインジェクション
ObjctiveC サウンド
ObjectMapperの備忘録
ObjectiveC NSString
ObjectiveC サーバ
ObjectiveC ターミナル用コマンドを作る
ObjectiveC バックグラウンド
ObjectiveC ワーニング
Oculusアプリの開発
OpenFeint
OpenOffice
OpenResty
Outlook VBA
PHP
POSTGRESQL
Pandas Python Data Analysis Library
PdfBox Java用PDFライブラリ
Plagger
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
PyHipster
QuartzCore
RAD
REST
RWKV
Rails3
Railsと差分開発についての考察
React.js
React.js モーダル画面
RecentDeleted
RedmineLE
Redshift
Relumeでサイトの骨格を作る
Require.js
Rubycocoa
RubyでScalaをコンパイルするツールをつくる
Rubyアソシエーション認定証
Ruby入門
SCALA REPL
SCALA support tool
SCALAの記事一覧
SELinux
SEO
SEO Yahoo対策
SEO対策一覧
SPAM対策
SQLite
SSH
SVNをJavaで操作
SakuraZencoding
SandBox
Scala / Hadoop
Scala Process exec
Scala 遅延評価
Scala/LiftでSlim3
ScalaSigParser
ScalaWithExcel
Scala チュートリアル
Scalaで3D
ScalaでLisp
ScalaとGroovyのPOJO比較
ScalaのIDEについて
Scala言語を学ぶやさしいツール「Kojo」
Slack API やってみる
SocketAppender
Spring
Spring bootでのテストのTIPS
SpringBootのSTSの新規プロジェクトでるエラーの対応
SpringSecurity SAML
Sqlite
Squirrel
StringTemplate
Stringクラス拡張
TALEND
ThreadLocal
Todo一覧
Trac Lightning
Twitter
UltraEdit
Unityでシューティングゲーム作る際のメモ
VBAのコード
VBAをOpenOffice.org Basicにする
VBAをOpenOffice.org+Basicにする
VPN構築の勉強メモ
VPSやIaaSメモ
VSCodeでRuby開発
VSCodeメモ
VSCode用ChatGptのPlugin
VSCode設定
VirtualBox On Mac
Visual Studio Code プラグイン開発
Vuexとは
WBS管理の弊害
WIN32API
WSDL
Watson
WebDesign探訪
WebLogic フィルタ
WikiEngines
WikiName
WikiWikiWeb
Windows10のPowerShell でキーボードの言語切り替え
WindowsTool
Worker Thread パターン
XBee
XDOCLET
XForms
XPath
XSL
YahooPIPES
Yahooインフォセンター
Yet Another Pragger
YouTuber
YukiWiki
anacondaをcygwinで使う
ansible
antlr snippet
antlr 再入門
antlrと日本語
autoit
automator
bluemix
bootstrap2
bower
ccze Colorize log files on CentOS and Ubuntu using ccze tool
centos7
cglibを使って動的コード生成
cocos2d
cygwin
diff
dockerのローカルイメージをDocker-in-Dockerで参照する
eclipse設定
emacs 備忘録
emacs 文字列置換
emacsをviライクにする
excel tips
expectで自動化
figmaにプラグインをインストールする
ftp自動化
gemini
generator-jhipster-gql
git diffを使った構成管理の省力化
goをやってみる
grizzly
gulp
homebrew
iPhone Bluetoothプログラミング
iPhone iAd
iPhone 実機テスト手続き
iPhoneでグラフィックのHellowWorld
iPhoneとGmailメール
iPhoneに実機転送
iPhoneプログラミング
iPhoneプログラミング/ビューを理解すればiPhoneアプリの基礎を押さえられる
iPhoneプログラミング一覧
iPhoneプログラミング入門
iPhone開発/Interface Builder Plug-in
iPhone開発/キャプチャの取り方
intra-mart
jQuery.Flickableのメモ
java spring boot 認証 memo
jersey
jhipster-codeにアノテーション追加してみる
jhipsterのテンプレート改造準備
jparsecドキュメント日本語訳
jparsec入門
kafkaの勉強
log4j2の脆弱性
mac diff
mailcowのインストール
memcached
minecraft マイクラ あるきながら、高速ダンジョン作成
mqttの勉強
nginx_lua
nginxのメモ
node_moduleをnpm linkを使って自分用にする
npm
openapi generator
openapi-generatorをコンパイル
openstack
oraclerac
play framework 1.2.5 sample
play! framework
play!framework selenium
playframework テンプレート
postmanとopenapi
prezi プレゼン
pukiwikiで行動管理
pukiwikiに類似したツール
pukiwiki勉強
pukiwiki記事一覧
python
python3のwindowsでの日本語文字化け対応
pythonでseleniumを使う
pythonのテストに使うライブラリ
rails5
reactでポップアップ表示
redmine
ruby on rails 6.0.0
scala
scala 99problem 32~
scala prototype.zip
scala repl
scala sbaz
scala spring
scala/インストール
scalaでまだ不勉強なところ
scalaのインストール
selenium
slack api
spark
spring boot
spring initializerをつかってプロジェクトのひな型をゲットする
spring-test
springboot
springboot env
storybook
sublimetext2
swagger
tracについて
ubuntu
vaadin
vue を typescriptで開発
vue 共通部品作成
vue.js memo
vue.jsとは
vue.jsのデバッグ
vue一覧
webの編集画面のよくあるパターン
windows環境構築
wordpress
xamppについて
•Axis2の本家のスタートガイドによるWebサービスの作り方
【Javascript】【CLIライブラリ】commanderの勉強
【MQL5】KuniRangeBreakoutEA
いまさらながらC++
びっくりする短いコード
アクター
アニメーション
アノテーション
アプリコット
アプリコット PukiWiki
アプリコード
アプリコード林邦行
イラストのエフェクト
インテンショナルプログラミング
カスタマイズjhipster7.9.3イメージ
カブロボ
ガイガーカウンター
クラスとハッシュマップの関係
クラック対策
クロス集計
コマンドラインという概念への考察
コミニュケーション
コード生成
サロゲートキーを使ったテーブル設計
シェルのサンプル
シェルサンプル
スクレイピング
スレッドプログラミングメモ
ソースtoソース変形
ターミナルをAppleScriptで制御
テキストエディタ作成javascriptフレームワーク
テスト用まっさらDBをdockerでたてる
テスト駆動
テレワーク環境の比較
ドット絵
バイオビルダー合成生物学メモ
バグの少ない設計のためのValueObject
パフォーマンスチューニング
フロントエンドのテストの結合テストを減らすには?
プッシュ技術
プログラマーじゃない人に覚えてほしいプログラムのコメントの書き方
プロジェクト管理スプレッドシート
マイクラ 有名ディメンション モッド
マクスウェル方程式
メタ
ラムダ計算について考える
リベリカJava13いいみたい
リモートワークでのプロジェクト注意点
レイアウトツール
ログ解析
世界の構文解析グラマーたち
予定表
予定表/2009-12-14
予定表/2009-12-18
予定表/2009-12-19
予定表/2009-12-22
予定表/2009-12-23
予定表/2009-12-24
事業の心構え
事業計画方針
人工知能とCUDA
人工知能コンペKaggle
仕様書のフォーマットについての考察
他言語サイトサンプル作成
仮説Oracleの罠
作曲と効果音作り
共和分
口コミ
古いRails5を入れる
哲学
大文字小文字変換
学習をHackする
扶養とシステム
投薬のみのガンの治療薬
擬似コーディングのすすめ
放射能対策
数式を扱う
文章を書く
新エネルギー
新年の抱負2010
新技術 プログラム編
日本のゼネコン式IT開発が失敗する理由
最近更新したページ
未来技術/新技術
枯れた技術の水平思考
株価データ
業界の動向
構文解析の記事一覧
正規表現
気象データ
流れるようなインタフェース
管理画面の生成におけるopenapiとJDLなどの考察
細胞の若返り
経済のことをまとめてみる
脆弱性
自分でPlaggerみたいなのを作るためのメモ
論語/学而第一
負荷テスト
販売/デスクトップPC
販売/ノートパソコン
販売/外部ストレージ
起業
酸化グラフェン
開発哲学
電子出版
電子出版の記事一覧
非可換幾何学
顧客分析のデシル分析とRFM分析
DIコンテナについて考える
MP3から携帯着うたを作る方法
*目次 [#va77d7e8] #contents *本体ダウンロード [#u3d71059] コマンドライン対応のWindows版を落としてくる。 DLLでもいいんだけどね。 解凍すると、 sqlite3.exe というファイルがある。 ここでは、下記のフォルダを作成してまとめて格納することにする。 c:\sqlite\ **URL [#u6563f62] http://www.sqlite.org/download.html *空のデータベース作成 [#ue698128] **Javaプログラムから [#gf845503] 存在しないDBにコネクションを張ろうとすると自動的に作成されます。 Class.forName("org.sqlite.JDBC"); Connection c = DriverManager.getConnection("jdbc:sqlite:/c:/sqlite/testdatabase3"); **コマンドプロンプトから [#y6c5b1ed] cd c:\sqlite C:\sqlite>sqlite3 testdatabase SQLite version 3.6.23.1 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> と表示される。 **DDLを入力する。 [#o7be3081] create table testtable( col1 int primary key, col2 char(128), col3 char(128) ); *コマンド [#q8157cbb] **テーブル一覧を見る。 [#yfc76f44] .tables **SQLite終了 [#wabd86b1] .quit *JDBCドライバインストール [#nb6b523b] 2箇所開発しているところがあるってことなのかな?でも、JDBCが動くサイトと、動かないサイトがあるんだよね。 **OKなJDBC [#f23f80d0] http://www.zentus.com/sqlitejdbc/ ちゃんと動作したバージョンは下記のバージョン sqlitejdbc-v056.jar **NGなJDBC [#pa1de7e3] 下記のは使い物にならんかった。正式版っぽい顔してけしからん。 http://www.db.is.kyushu-u.ac.jp/rinkou/sqlite/sqlitejava.html 単純に最新版をEclipseから外部JARファイル追加としても動作しない。 こんなエラーが出る java.lang.UnsupportedClassVersionError: org/sqlite/JDBC (Unsupported major.minor version 49.0) かんべんしてよ。 いっそのこと、SQLite3とJDBCドライバまとめて出しちゃえば? っておもったよ。 *動作確認用Javaサンプル [#i8ec443d] package sqlite; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class HelloSQLite { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("org.sqlite.JDBC"); Connection c = DriverManager.getConnection("jdbc:sqlite:/c:/sqlite/testdatabase"); } } *メモリ上にテーブルを作成する場合 [#vc779f30] Connection c = DriverManager.getConnection("jdbc:sqlite::memory:"); *編集ツール [#q02b78f1] -TkSQLite Windows と Linux で使える編集ツールです。 -PupSQLite Windows で使える編集ツールです。 -SQLite Manager Firefox add-ons (英語) Firefox で使える編集ツールです。 -Lita - SQLite Administration Tool (英語) Adobe AIR で使える編集ツールです。 *SQLite が認識できる SQL [#sb731c7d] http://net-newbie.com/sqlite/lang.html *テストツール [#hb3d8d7e] ※書きかけです。 テストツールを作成する際、ある程度の決まりごとがあるので、それらのコードをまとめておく。 設計方針としては、極力ローカル変数で宣言しなくても、目的のコードを記述できるようにする。 **コード [#b1d83f4f] 作りかけではあるが、クラスのデザインの方向性を示せるレベルだとは思っています。 ***Ary [#ba83ecd8] package base; import java.util.ArrayList; public class Ary extends ArrayList { } ***Column [#d7352d4c] package base; import java.sql.ResultSet; import java.sql.SQLException; abstract public class Column { private String TABLE_CAT; private String TABLE_SCHEM; private String TABLE_NAME; private String COLUMN_NAME; private int DATA_TYPE; private String TYPE_NAME; private int COLUMN_SIZE; private int BUFFER_LENGTH; private int DECIMAL_DIGITS; private int NUM_PREC_RADIX; private int NULLABLE; private String REMARKS; private String COLUMN_DEF; private int SQL_DATA_TYPE; private int SQL_DATETIME_SUB; private int CHAR_OCTET_LENGTH; private int ORDINAL_POSITION; private String IS_NULLABLE; private int JDBC_DATA_TYPE; private int PSEUDO_COLUMN; private String COLUMN_TEXT; public int getBUFFER_LENGTH() { return BUFFER_LENGTH; } public void setBUFFER_LENGTH(int buffer_length) { BUFFER_LENGTH = buffer_length; } public int getCHAR_OCTET_LENGTH() { return CHAR_OCTET_LENGTH; } public void setCHAR_OCTET_LENGTH(int char_octet_length) { CHAR_OCTET_LENGTH = char_octet_length; } public String getCOLUMN_DEF() { return COLUMN_DEF; } public void setCOLUMN_DEF(String column_def) { COLUMN_DEF = column_def; } public String getCOLUMN_NAME() { return COLUMN_NAME; } public void setCOLUMN_NAME(String column_name) { COLUMN_NAME = column_name; } public int getCOLUMN_SIZE() { return COLUMN_SIZE; } public void setCOLUMN_SIZE(int column_size) { COLUMN_SIZE = column_size; } public String getCOLUMN_TEXT() { return COLUMN_TEXT; } public void setCOLUMN_TEXT(String column_text) { COLUMN_TEXT = column_text; } public int getDATA_TYPE() { return DATA_TYPE; } public void setDATA_TYPE(int data_type) { DATA_TYPE = data_type; } public int getDECIMAL_DIGITS() { return DECIMAL_DIGITS; } public void setDECIMAL_DIGITS(int decimal_digits) { DECIMAL_DIGITS = decimal_digits; } public String getIS_NULLABLE() { return IS_NULLABLE; } public void setIS_NULLABLE(String is_nullable) { IS_NULLABLE = is_nullable; } public int getJDBC_DATA_TYPE() { return JDBC_DATA_TYPE; } public void setJDBC_DATA_TYPE(int jdbc_data_type) { JDBC_DATA_TYPE = jdbc_data_type; } public int getNULLABLE() { return NULLABLE; } public void setNULLABLE(int nullable) { NULLABLE = nullable; } public int getNUM_PREC_RADIX() { return NUM_PREC_RADIX; } public void setNUM_PREC_RADIX(int num_prec_radix) { NUM_PREC_RADIX = num_prec_radix; } public int getORDINAL_POSITION() { return ORDINAL_POSITION; } public void setORDINAL_POSITION(int ordinal_position) { ORDINAL_POSITION = ordinal_position; } public int getPSEUDO_COLUMN() { return PSEUDO_COLUMN; } public void setPSEUDO_COLUMN(int pseudo_column) { PSEUDO_COLUMN = pseudo_column; } public String getREMARKS() { return REMARKS; } public void setREMARKS(String remarks) { REMARKS = remarks; } public int getSQL_DATA_TYPE() { return SQL_DATA_TYPE; } public void setSQL_DATA_TYPE(int sql_data_type) { SQL_DATA_TYPE = sql_data_type; } public int getSQL_DATETIME_SUB() { return SQL_DATETIME_SUB; } public void setSQL_DATETIME_SUB(int sql_datetime_sub) { SQL_DATETIME_SUB = sql_datetime_sub; } public String getTABLE_CAT() { return TABLE_CAT; } public void setTABLE_CAT(String table_cat) { TABLE_CAT = table_cat; } public String getTABLE_NAME() { return TABLE_NAME; } public void setTABLE_NAME(String table_name) { TABLE_NAME = table_name; } public String getTABLE_SCHEM() { return TABLE_SCHEM; } public void setTABLE_SCHEM(String table_schem) { TABLE_SCHEM = table_schem; } public String getTYPE_NAME() { return TYPE_NAME; } public void setTYPE_NAME(String type_name) { TYPE_NAME = type_name; } public String makeDDL() { StringBuffer ret = new StringBuffer(); ret.append(getCOLUMN_NAME()); ret.append(" "); ret.append(getColumntypeInstance().getDDL()); return ret.toString(); } public void printinfo(){ System.out.println("TABLE_CAT\t:" + getTABLE_CAT()); System.out.println("TABLE_SCHEM\t:" + getTABLE_SCHEM()); System.out.println("TABLE_NAME\t:" + getTABLE_NAME()); System.out.println("COLUMN_NAME\t:" + getCOLUMN_NAME()); System.out.println("DATA_TYPE\t:" + getDATA_TYPE()); System.out.println("TYPE_NAME\t:" + getTYPE_NAME()); System.out.println("COLUMN_SIZE\t:" + getCOLUMN_SIZE()); System.out.println("BUFFER_LENGTH\t:" + getBUFFER_LENGTH()); System.out.println("DECIMAL_DIGITS\t:" + getDECIMAL_DIGITS()); System.out.println("NUM_PREC_RADIX\t:" + getNUM_PREC_RADIX()); System.out.println("NULLABLE\t:" + getNULLABLE()); System.out.println("NULLABLE\t:" + getNULLABLE()); System.out.println("COLUMN_DEF\t:" + getCOLUMN_DEF()); System.out.println("SQL_DATA_TYPE\t:" + getSQL_DATA_TYPE()); System.out.println("SQL_DATETIME_SUB\t:" + getSQL_DATETIME_SUB()); System.out.println("CHAR_OCTET_LENGTH\t:" + getCHAR_OCTET_LENGTH()); System.out.println("ORDINAL_POSITION\t:" + getORDINAL_POSITION()); System.out.println("IS_NULLABLE\t:" + getIS_NULLABLE()); System.out.println("JDBC_DATA_TYPE\t:" + getJDBC_DATA_TYPE()); System.out.println("PSEUDO_COLUMN\t:" + getPSEUDO_COLUMN()); System.out.println("COLUMN_TEXT\t:" + getCOLUMN_TEXT()); } abstract public IColumntype getColumntypeInstance(); public void setByRs(ResultSet rs) { try { setTABLE_CAT(ColumnUtil.getTABLE_CAT(rs)); setTABLE_SCHEM(ColumnUtil.getTABLE_SCHEM(rs)); setTABLE_NAME(ColumnUtil.getTABLE_NAME(rs)); setCOLUMN_NAME(ColumnUtil.getCOLUMN_NAME(rs)); setDATA_TYPE(ColumnUtil.getDATA_TYPE(rs)); setTYPE_NAME(ColumnUtil.getTYPE_NAME(rs)); setCOLUMN_SIZE(ColumnUtil.getCOLUMN_SIZE(rs)); setBUFFER_LENGTH(ColumnUtil.getBUFFER_LENGTH(rs)); setDECIMAL_DIGITS(ColumnUtil.getDECIMAL_DIGITS(rs)); setNUM_PREC_RADIX(ColumnUtil.getNUM_PREC_RADIX(rs)); setNULLABLE(ColumnUtil.getNULLABLE(rs)); setREMARKS(ColumnUtil.getREMARKS(rs)); setCOLUMN_DEF(ColumnUtil.getCOLUMN_DEF(rs)); setSQL_DATA_TYPE(ColumnUtil.getSQL_DATA_TYPE(rs)); setSQL_DATETIME_SUB(ColumnUtil.getSQL_DATETIME_SUB(rs)); setCHAR_OCTET_LENGTH(ColumnUtil.getCHAR_OCTET_LENGTH(rs)); setORDINAL_POSITION(ColumnUtil.getORDINAL_POSITION(rs)); setBUFFER_LENGTH(ColumnUtil.getBUFFER_LENGTH(rs)); setIS_NULLABLE(ColumnUtil.getIS_NULLABLE(rs)); setJDBC_DATA_TYPE(ColumnUtil.getJDBC_DATA_TYPE(rs)); setPSEUDO_COLUMN(ColumnUtil.getPSEUDO_COLUMN(rs)); setCOLUMN_TEXT(ColumnUtil.getCOLUMN_TEXT(rs)); } catch (SQLException e) { } } public void setByColumn(Column item) { setTABLE_CAT(item.getTABLE_CAT()); setTABLE_SCHEM(item.getTABLE_SCHEM()); setTABLE_NAME(item.getTABLE_NAME()); setCOLUMN_NAME(item.getCOLUMN_NAME()); setDATA_TYPE(convDATA_TYPE(item)); setTYPE_NAME(item.getTYPE_NAME()); setCOLUMN_SIZE(item.getCOLUMN_SIZE()); setBUFFER_LENGTH(item.getBUFFER_LENGTH()); setDECIMAL_DIGITS(item.getDECIMAL_DIGITS()); setNUM_PREC_RADIX(item.getNUM_PREC_RADIX()); setNULLABLE(item.getNULLABLE()); setREMARKS(item.getREMARKS()); setCOLUMN_DEF(item.getCOLUMN_DEF()); setSQL_DATA_TYPE(item.getSQL_DATA_TYPE()); setSQL_DATETIME_SUB(item.getSQL_DATETIME_SUB()); setCHAR_OCTET_LENGTH(item.getCHAR_OCTET_LENGTH()); setORDINAL_POSITION(item.getORDINAL_POSITION()); setBUFFER_LENGTH(item.getBUFFER_LENGTH()); setIS_NULLABLE(item.getIS_NULLABLE()); setJDBC_DATA_TYPE(item.getJDBC_DATA_TYPE()); setPSEUDO_COLUMN(item.getPSEUDO_COLUMN()); setCOLUMN_TEXT(item.getCOLUMN_TEXT()); } abstract public int convDATA_TYPE(Column item); } ***ColumnDB2JDBC [#l70c25d8] package base; public class ColumnDB2JDBC extends Column { public static final int DATA_TYPE_BIGINT = -5; public static final int DATA_TYPE_INTEGER = 4; public static final int DATA_TYPE_SMALLINT = 5; public static final int DATA_TYPE_DECIMAL = 3; public static final int DATA_TYPE_NUMERIC = 2; public static final int DATA_TYPE_DOUBLE_PRECISION = 8; public static final int DATA_TYPE_REAL = 7; public static final int DATA_TYPE_CHARACTER = 1; public static final int DATA_TYPE_CHARACTER_FOR_BIT_DATA = -2; public static final int DATA_TYPE_VARCHAR = 12; public static final int DATA_TYPE_VARCHAR_FOR_BIT_DATA = -3; public static final int DATA_TYPE_CLOB = 40; public static final int DATA_TYPE_GRAPHIC = -95; public static final int DATA_TYPE_VARGRAPHIC = -96; public static final int DATA_TYPE_DBCLOB = -350; public static final int DATA_TYPE_BINARY = -2; public static final int DATA_TYPE_VARBINARY = -3; public static final int DATA_TYPE_BLOB =30; public static final int DATA_TYPE_DATE = 91; public static final int DATA_TYPE_TIME = 92; public static final int DATA_TYPE_TIMESTAMP = 93; public static final int DATA_TYPE_DATALINK = 70; public static final int DATA_TYPE_ROWID = -100; public static final int DATA_TYPE_DISTINCT = 17; public IColumntype getColumntypeInstance() { // TODO 自動生成されたメソッド・スタブ return null; } public int convDATA_TYPE(Column item) { return -1; } } ***ColumnDB2ODBC [#t5dae814] package base; public class ColumnDB2ODBC extends Column { public static final int DATA_TYPE_BIGINT = -5; public static final int DATA_TYPE_INTEGER = 4; public static final int DATA_TYPE_SMALLINT = 5; public static final int DATA_TYPE_DECIMAL = 3; public static final int DATA_TYPE_NUMERIC = 2; public static final int DATA_TYPE_DOUBLE_PRECISION = 8; public static final int DATA_TYPE_REAL = 7; public static final int DATA_TYPE_CHARACTER = 1; public static final int DATA_TYPE_CHARACTER_FOR_BIT_DATA = -2; public static final int DATA_TYPE_VARCHAR = 12; public static final int DATA_TYPE_VARCHAR_FOR_BIT_DATA = -3; public static final int DATA_TYPE_CLOB = 2005; public static final int DATA_TYPE_GRAPHIC = 1; public static final int DATA_TYPE_VARGRAPHIC = 12; public static final int DATA_TYPE_DBCLOB = 1111; public static final int DATA_TYPE_BINARY = -2; public static final int DATA_TYPE_VARBINARY = -3; public static final int DATA_TYPE_BLOB =2004; public static final int DATA_TYPE_DATE = 91; public static final int DATA_TYPE_TIME = 92; public static final int DATA_TYPE_TIMESTAMP = 93; public static final int DATA_TYPE_DATALINK = 70; public static final int DATA_TYPE_ROWID = 1111; public static final int DATA_TYPE_DISTINCT = 2001; public IColumntype getColumntypeInstance() { // TODO 自動生成されたメソッド・スタブ return null; } public int convDATA_TYPE(Column item) { return -1; } } ***ColumnList [#ub0ee196] package base; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class ColumnList extends Ary { //コネクション private ConnectionAutoClose _con; //コンストラクター public ColumnList(ConnectionAutoClose con,String tablename) throws SQLException{ _con = con; // ステートメントオブジェクトを生成 DatabaseMetaData dmd = _con.getMetaData(); ResultSet rs = null; rs = dmd.getColumns(null, null,tablename,null); try { while(rs.next()){ //テーブルのアイテムを追加します。 Column column = null; if (_con instanceof ConnectionSQLite){ column = new ColumnSQLite(); } else if (_con instanceof ConnectionODBC){ column = new ColumnDB2ODBC(); } column.setByRs(rs); add(column); } } catch (Exception e) { e.printStackTrace(); } finally { rs.close(); } } //アイテムを返します。 public Column getItem(int index){ return (Column)get(index); } //テーブル名一覧を返します。 public ArrayList getColumnNameList(){ ArrayList ret = new ArrayList(); for (int i = 0; i < size(); i++) { ret.add(getItem(i).getCOLUMN_NAME()); } return ret; } /** * DDLを生成します。 * @return */ public String makeDDL() { StringBuffer ret = new StringBuffer(); Column column; for (int i = 0; i < size(); i++) { column = (Column) get(i); ret.append(column.makeDDL()); ret.append(","); } return ret.toString(); } public void printinfo(){ for (int i = 0; i < size(); i++) { System.out.println("----------"); getItem(i).printinfo(); } } public void addItem(Column newColumn) { add(newColumn); } } ***ColumnMdbODBC [#g32591b6] package base; public class ColumnMdbODBC extends Column { public static final int DATA_TYPE_BIGINT = -5; public static final int DATA_TYPE_INTEGER = 4; public static final int DATA_TYPE_SMALLINT = 5; public static final int DATA_TYPE_DECIMAL = 3; public static final int DATA_TYPE_NUMERIC = 2; public static final int DATA_TYPE_DOUBLE_PRECISION = 8; public static final int DATA_TYPE_REAL = 7; public static final int DATA_TYPE_CHARACTER = 1; public static final int DATA_TYPE_CHARACTER_FOR_BIT_DATA = -2; public static final int DATA_TYPE_VARCHAR = 12; public static final int DATA_TYPE_VARCHAR_FOR_BIT_DATA = -3; public static final int DATA_TYPE_CLOB = 2005; public static final int DATA_TYPE_GRAPHIC = 1; public static final int DATA_TYPE_VARGRAPHIC = 12; public static final int DATA_TYPE_DBCLOB = 1111; public static final int DATA_TYPE_BINARY = -2; public static final int DATA_TYPE_VARBINARY = -3; public static final int DATA_TYPE_BLOB =2004; public static final int DATA_TYPE_DATE = 91; public static final int DATA_TYPE_TIME = 92; public static final int DATA_TYPE_TIMESTAMP = 93; public static final int DATA_TYPE_DATALINK = 70; public static final int DATA_TYPE_ROWID = 1111; public static final int DATA_TYPE_DISTINCT = 2001; public IColumntype getColumntypeInstance() { // TODO 自動生成されたメソッド・スタブ return null; } public int convDATA_TYPE(Column item) { return -1; } } ***ColumnSQLite [#d7b85239] package base; public class ColumnSQLite extends Column { public static final int DATA_TYPE_INTEGER = 1; public static final int DATA_TYPE_VARCHAR = 3; public static final int DATA_TYPE_BLOB = 4; public static final int DATA_TYPE_NULL = 5; public static final int DATA_TYPE_FLOAT = 2; public IColumntype getColumntypeInstance() { IColumntype ret = null; if (getDATA_TYPE() == DATA_TYPE_VARCHAR){ ret = new VarcharColum(); } else if (getDATA_TYPE() == DATA_TYPE_INTEGER){ ret = new IntegerColumn(); } else if (getDATA_TYPE() == DATA_TYPE_BLOB){ ret = new IntegerColumn(); } else if (getDATA_TYPE() == DATA_TYPE_FLOAT){ ret = new IntegerColumn(); } else { ret = new NullColumn(); } return ret; } //DBがサポートするデータタイプのクラスを返します。 class IntegerColumn implements IColumntype{ public String getDDL() { String ret = "INTEGER"; if ("0".equals(getIS_NULLABLE())){ ret = ret + getIS_NULLABLE(); } return ret; } } class VarcharColum implements IColumntype{ public String getDDL() { String ret = "VARCHAR(" + getCOLUMN_SIZE() +")"; return ret; } } class BlobColumn implements IColumntype{ public String getDDL() { String ret = "BLOB"; return ret; } } class NullColumn implements IColumntype{ public String getDDL() { return ""; } } class FloatColumn implements IColumntype{ public String getDDL() { String ret = "FLOAT"; return ret; } } public int convDATA_TYPE(Column item) { if (item instanceof ColumnMdbODBC){ switch (item.getDATA_TYPE()){ case ColumnMdbODBC.DATA_TYPE_BIGINT: return DATA_TYPE_INTEGER; default: System.out.println("未定義:item.getDATA_TYPE()"+item.getDATA_TYPE()); return -1; } } else { System.out.println("未定義:item"+item.getClass().getName()); return -1; } } } ***ColumnUtil [#g384ef38] package base; import java.sql.ResultSet; import java.sql.SQLException; /**<P> * 検索結果に格納されたカラム情報の結果をキーからJavaのシンボルに切り替える * </P> */ public class ColumnUtil { //TABLE_CAT public static String getTABLE_CAT(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("TABLE_CAT"); } catch (Exception e) { return ""; } } //TABLE_SCHEM public static String getTABLE_SCHEM(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("TABLE_SCHEM"); } catch (Exception e) { return ""; } } //TABLE_NAME public static String getTABLE_NAME(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("TABLE_NAME"); } catch (Exception e) { return ""; } } //COLUMN_NAME public static String getCOLUMN_NAME(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("COLUMN_NAME"); } catch (Exception e) { return ""; } } //DATA_TYPE public static int getDATA_TYPE(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("DATA_TYPE"); } //TYPE_NAME public static String getTYPE_NAME(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("TYPE_NAME"); } catch (Exception e) { return ""; } } //COLUMN_SIZE public static int getCOLUMN_SIZE(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("COLUMN_SIZE"); } //BUFFER_LENGTH public static int getBUFFER_LENGTH(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getInt("BUFFER_LENGTH"); } catch (SQLException e) { return -1; } } //DECIMAL_DIGITS public static int getDECIMAL_DIGITS(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("DECIMAL_DIGITS"); } //NUM_PREC_RADIX public static int getNUM_PREC_RADIX(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("NUM_PREC_RADIX"); } //NULLABLE public static int getNULLABLE(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("NULLABLE"); } //REMARKS public static String getREMARKS(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("REMARKS"); } catch (Exception e) { return ""; } } //COLUMN_DEF public static String getCOLUMN_DEF(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("COLUMN_DEF"); } catch (Exception e) { return ""; } } //SQL_DATA_TYPE public static int getSQL_DATA_TYPE(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getInt("SQL_DATA_TYPE"); } catch (Exception e) { return -1; } } //SQL_DATETIME_SUB public static int getSQL_DATETIME_SUB(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("SQL_DATETIME_SUB"); } //CHAR_OCTET_LENGTH public static int getCHAR_OCTET_LENGTH(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("CHAR_OCTET_LENGTH"); } //ORDINAL_POSITION public static int getORDINAL_POSITION(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("ORDINAL_POSITION"); } //IS_NULLABLE public static String getIS_NULLABLE(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("IS_NULLABLE"); } catch (Exception e) { return ""; } } //JDBC_DATA_TYPE public static int getJDBC_DATA_TYPE(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getInt("JDBC_DATA_TYPE"); } catch (Exception e) { return -1; } } //PSEUDO_COLUMN public static int getPSEUDO_COLUMN(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getInt("PSEUDO_COLUMN"); } catch (Exception e) { return -1; } } //COLUMN_TEXT public static String getCOLUMN_TEXT(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("COLUMN_TEXT"); } catch (Exception e) { return ""; } } } ***ConnectionAutoClose [#e0c73226] package base; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.SQLWarning; import java.sql.Savepoint; import java.sql.Statement; import java.util.Map; abstract public class ConnectionAutoClose implements java.sql.Connection{ // ドライバクラスをロード public static Class odbc = null; public Connection connection = null; //自動クローズ protected void finalize() { try { if (!isClosed()){ close(); } } catch (SQLException e) { } } public void clearWarnings() throws SQLException { connection.clearWarnings(); } public void close() throws SQLException { connection.close(); } public void commit() throws SQLException { connection.commit(); } public Statement createStatement() throws SQLException { return connection.createStatement(); } public Statement createStatement(int arg0, int arg1, int arg2) throws SQLException { return connection.createStatement(arg0, arg1, arg2); } public Statement createStatement(int arg0, int arg1) throws SQLException { return connection.createStatement(arg0, arg1); } public boolean getAutoCommit() throws SQLException { return connection.getAutoCommit(); } public String getCatalog() throws SQLException { return connection.getCatalog(); } public int getHoldability() throws SQLException { return connection.getHoldability(); } public DatabaseMetaData getMetaData() throws SQLException { return connection.getMetaData(); } public int getTransactionIsolation() throws SQLException { return connection.getTransactionIsolation(); } public Map getTypeMap() throws SQLException { return connection.getTypeMap(); } public SQLWarning getWarnings() throws SQLException { return connection.getWarnings(); } public boolean isClosed() throws SQLException { return connection.isClosed(); } public boolean isReadOnly() throws SQLException { return connection.isReadOnly(); } public String nativeSQL(String arg0) throws SQLException { return connection.nativeSQL(arg0); } public CallableStatement prepareCall(String arg0, int arg1, int arg2, int arg3) throws SQLException { return connection.prepareCall(arg0, arg1, arg2, arg3); } public CallableStatement prepareCall(String arg0, int arg1, int arg2) throws SQLException { return connection.prepareCall(arg0, arg1, arg2); } public CallableStatement prepareCall(String arg0) throws SQLException { return connection.prepareCall(arg0); } public PreparedStatement prepareStatement(String arg0, int arg1, int arg2, int arg3) throws SQLException { return connection.prepareStatement(arg0, arg1, arg2, arg3); } public PreparedStatement prepareStatement(String arg0, int arg1, int arg2) throws SQLException { return connection.prepareStatement(arg0, arg1, arg2); } public PreparedStatement prepareStatement(String arg0, int arg1) throws SQLException { return connection.prepareStatement(arg0, arg1); } public PreparedStatement prepareStatement(String arg0, int[] arg1) throws SQLException { return connection.prepareStatement(arg0, arg1); } public PreparedStatement prepareStatement(String arg0, String[] arg1) throws SQLException { return connection.prepareStatement(arg0, arg1); } public PreparedStatement prepareStatement(String arg0) throws SQLException { return connection.prepareStatement(arg0); } public void releaseSavepoint(Savepoint arg0) throws SQLException { connection.releaseSavepoint(arg0); } public void rollback() throws SQLException { connection.rollback(); } public void rollback(Savepoint arg0) throws SQLException { connection.rollback(arg0); } public void setAutoCommit(boolean arg0) throws SQLException { connection.setAutoCommit(arg0); } public void setCatalog(String arg0) throws SQLException { connection.setCatalog(arg0); } public void setHoldability(int arg0) throws SQLException { connection.setHoldability(arg0); } public void setReadOnly(boolean arg0) throws SQLException { connection.setReadOnly(arg0); } public Savepoint setSavepoint() throws SQLException { return connection.setSavepoint(); } public Savepoint setSavepoint(String arg0) throws SQLException { return connection.setSavepoint(arg0); } public void setTransactionIsolation(int arg0) throws SQLException { connection.setTransactionIsolation(arg0); } public void setTypeMap(Map arg0) throws SQLException { connection.setTypeMap(arg0); } public TableList getTableList() throws SQLException { return new TableList(this); } public void execute(String ddl) { } } ***ConnectionODBC [#e9407146] package base; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionODBC extends ConnectionAutoClose{ //コンストラクタ public ConnectionODBC(String name) throws ClassNotFoundException, SQLException{ super(); if (odbc == null){ odbc = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); connection = DriverManager.getConnection("jdbc:odbc:" + name); } } } ***ConnectionSQLite [#ya08223f] package base; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionSQLite extends ConnectionAutoClose{ //コンストラクタ public ConnectionSQLite(String name) throws ClassNotFoundException, SQLException{ super(); if (odbc == null || connection == null){ odbc = Class.forName("org.sqlite.JDBC"); connection = DriverManager.getConnection("jdbc:sqlite:/" + name); } } } ***IColumntype [#o30ac269] package base; public interface IColumntype { public String getDDL(); } ***IDataType [#z851fa6b] package base; public interface IDataType { public String makeDDL(); } ***Table [#bb08c5ca] package base; import java.sql.SQLException; import java.util.ArrayList; public class Table { public String _name; public String _type; public ConnectionAutoClose _con; private ColumnList columnlist = null; public Table(ConnectionAutoClose con,String name, String type) { _name = name; _type = type; _con = con; } public ColumnList getColumnList() throws SQLException { if (columnlist == null){ columnlist = new ColumnList(_con, _name); } return columnlist; } //テーブルを複製します。 public void copy(ConnectionAutoClose con) throws SQLException { //conにテープル追加 if (!con.getTableList().exist(_name)){ Table newTable = new Table(con,_name,_type); con.getTableList().add(newTable); //カラムの追加 ColumnList list = getColumnList(); for (int i = 0; i < list.size(); i++) { Column newColumn = new ColumnSQLite(); newColumn.setByColumn(list.getItem(i)); newTable.getColumnList().addItem(newColumn); } String ddl = "CREATE TABLE " + _name + " (" + newTable.getColumnList().makeDDL() + //カラム "PRIMARY KEY(" + ")" + ")"; con.execute(ddl); } else { System.out.println(_name + "はすでにあります。"); } } } ***TableList [#r5a7bff9] package base; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class TableList extends Ary { //コネクション private ConnectionAutoClose _con; //コンストラクター public TableList(ConnectionAutoClose con) throws SQLException{ _con = con; // ステートメントオブジェクトを生成 //Statement stmt = _con.createStatement(); DatabaseMetaData dmd = _con.getMetaData(); String types[] = { "TABLE" }; ResultSet rs = null; rs = dmd.getTables(null, null,"%", types); try { while(rs.next()){ //テーブルのアイテムを追加します。 Table table = new Table(_con,rs.getString("TABLE_NAME"),rs.getString("TABLE_TYPE")); add(table); } } finally { rs.close(); } } //アイテムを返します。 public Table getItem(int index){ return (Table)get(index); } //テーブル名一覧を返します。 public ArrayList getTableNameList(){ ArrayList ret = new ArrayList(); for (int i = 0; i < size(); i++) { ret.add(getItem(i)._name); } return ret; } public boolean exist(String _name) { String name; for (int i = 0; i < size(); i++) { if (getItem(i)._name.equals(_name)){ return true; } } return false; } }
spamではない場合はチェックをいれてください。
タイムスタンプを変更しない
*目次 [#va77d7e8] #contents *本体ダウンロード [#u3d71059] コマンドライン対応のWindows版を落としてくる。 DLLでもいいんだけどね。 解凍すると、 sqlite3.exe というファイルがある。 ここでは、下記のフォルダを作成してまとめて格納することにする。 c:\sqlite\ **URL [#u6563f62] http://www.sqlite.org/download.html *空のデータベース作成 [#ue698128] **Javaプログラムから [#gf845503] 存在しないDBにコネクションを張ろうとすると自動的に作成されます。 Class.forName("org.sqlite.JDBC"); Connection c = DriverManager.getConnection("jdbc:sqlite:/c:/sqlite/testdatabase3"); **コマンドプロンプトから [#y6c5b1ed] cd c:\sqlite C:\sqlite>sqlite3 testdatabase SQLite version 3.6.23.1 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> と表示される。 **DDLを入力する。 [#o7be3081] create table testtable( col1 int primary key, col2 char(128), col3 char(128) ); *コマンド [#q8157cbb] **テーブル一覧を見る。 [#yfc76f44] .tables **SQLite終了 [#wabd86b1] .quit *JDBCドライバインストール [#nb6b523b] 2箇所開発しているところがあるってことなのかな?でも、JDBCが動くサイトと、動かないサイトがあるんだよね。 **OKなJDBC [#f23f80d0] http://www.zentus.com/sqlitejdbc/ ちゃんと動作したバージョンは下記のバージョン sqlitejdbc-v056.jar **NGなJDBC [#pa1de7e3] 下記のは使い物にならんかった。正式版っぽい顔してけしからん。 http://www.db.is.kyushu-u.ac.jp/rinkou/sqlite/sqlitejava.html 単純に最新版をEclipseから外部JARファイル追加としても動作しない。 こんなエラーが出る java.lang.UnsupportedClassVersionError: org/sqlite/JDBC (Unsupported major.minor version 49.0) かんべんしてよ。 いっそのこと、SQLite3とJDBCドライバまとめて出しちゃえば? っておもったよ。 *動作確認用Javaサンプル [#i8ec443d] package sqlite; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class HelloSQLite { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("org.sqlite.JDBC"); Connection c = DriverManager.getConnection("jdbc:sqlite:/c:/sqlite/testdatabase"); } } *メモリ上にテーブルを作成する場合 [#vc779f30] Connection c = DriverManager.getConnection("jdbc:sqlite::memory:"); *編集ツール [#q02b78f1] -TkSQLite Windows と Linux で使える編集ツールです。 -PupSQLite Windows で使える編集ツールです。 -SQLite Manager Firefox add-ons (英語) Firefox で使える編集ツールです。 -Lita - SQLite Administration Tool (英語) Adobe AIR で使える編集ツールです。 *SQLite が認識できる SQL [#sb731c7d] http://net-newbie.com/sqlite/lang.html *テストツール [#hb3d8d7e] ※書きかけです。 テストツールを作成する際、ある程度の決まりごとがあるので、それらのコードをまとめておく。 設計方針としては、極力ローカル変数で宣言しなくても、目的のコードを記述できるようにする。 **コード [#b1d83f4f] 作りかけではあるが、クラスのデザインの方向性を示せるレベルだとは思っています。 ***Ary [#ba83ecd8] package base; import java.util.ArrayList; public class Ary extends ArrayList { } ***Column [#d7352d4c] package base; import java.sql.ResultSet; import java.sql.SQLException; abstract public class Column { private String TABLE_CAT; private String TABLE_SCHEM; private String TABLE_NAME; private String COLUMN_NAME; private int DATA_TYPE; private String TYPE_NAME; private int COLUMN_SIZE; private int BUFFER_LENGTH; private int DECIMAL_DIGITS; private int NUM_PREC_RADIX; private int NULLABLE; private String REMARKS; private String COLUMN_DEF; private int SQL_DATA_TYPE; private int SQL_DATETIME_SUB; private int CHAR_OCTET_LENGTH; private int ORDINAL_POSITION; private String IS_NULLABLE; private int JDBC_DATA_TYPE; private int PSEUDO_COLUMN; private String COLUMN_TEXT; public int getBUFFER_LENGTH() { return BUFFER_LENGTH; } public void setBUFFER_LENGTH(int buffer_length) { BUFFER_LENGTH = buffer_length; } public int getCHAR_OCTET_LENGTH() { return CHAR_OCTET_LENGTH; } public void setCHAR_OCTET_LENGTH(int char_octet_length) { CHAR_OCTET_LENGTH = char_octet_length; } public String getCOLUMN_DEF() { return COLUMN_DEF; } public void setCOLUMN_DEF(String column_def) { COLUMN_DEF = column_def; } public String getCOLUMN_NAME() { return COLUMN_NAME; } public void setCOLUMN_NAME(String column_name) { COLUMN_NAME = column_name; } public int getCOLUMN_SIZE() { return COLUMN_SIZE; } public void setCOLUMN_SIZE(int column_size) { COLUMN_SIZE = column_size; } public String getCOLUMN_TEXT() { return COLUMN_TEXT; } public void setCOLUMN_TEXT(String column_text) { COLUMN_TEXT = column_text; } public int getDATA_TYPE() { return DATA_TYPE; } public void setDATA_TYPE(int data_type) { DATA_TYPE = data_type; } public int getDECIMAL_DIGITS() { return DECIMAL_DIGITS; } public void setDECIMAL_DIGITS(int decimal_digits) { DECIMAL_DIGITS = decimal_digits; } public String getIS_NULLABLE() { return IS_NULLABLE; } public void setIS_NULLABLE(String is_nullable) { IS_NULLABLE = is_nullable; } public int getJDBC_DATA_TYPE() { return JDBC_DATA_TYPE; } public void setJDBC_DATA_TYPE(int jdbc_data_type) { JDBC_DATA_TYPE = jdbc_data_type; } public int getNULLABLE() { return NULLABLE; } public void setNULLABLE(int nullable) { NULLABLE = nullable; } public int getNUM_PREC_RADIX() { return NUM_PREC_RADIX; } public void setNUM_PREC_RADIX(int num_prec_radix) { NUM_PREC_RADIX = num_prec_radix; } public int getORDINAL_POSITION() { return ORDINAL_POSITION; } public void setORDINAL_POSITION(int ordinal_position) { ORDINAL_POSITION = ordinal_position; } public int getPSEUDO_COLUMN() { return PSEUDO_COLUMN; } public void setPSEUDO_COLUMN(int pseudo_column) { PSEUDO_COLUMN = pseudo_column; } public String getREMARKS() { return REMARKS; } public void setREMARKS(String remarks) { REMARKS = remarks; } public int getSQL_DATA_TYPE() { return SQL_DATA_TYPE; } public void setSQL_DATA_TYPE(int sql_data_type) { SQL_DATA_TYPE = sql_data_type; } public int getSQL_DATETIME_SUB() { return SQL_DATETIME_SUB; } public void setSQL_DATETIME_SUB(int sql_datetime_sub) { SQL_DATETIME_SUB = sql_datetime_sub; } public String getTABLE_CAT() { return TABLE_CAT; } public void setTABLE_CAT(String table_cat) { TABLE_CAT = table_cat; } public String getTABLE_NAME() { return TABLE_NAME; } public void setTABLE_NAME(String table_name) { TABLE_NAME = table_name; } public String getTABLE_SCHEM() { return TABLE_SCHEM; } public void setTABLE_SCHEM(String table_schem) { TABLE_SCHEM = table_schem; } public String getTYPE_NAME() { return TYPE_NAME; } public void setTYPE_NAME(String type_name) { TYPE_NAME = type_name; } public String makeDDL() { StringBuffer ret = new StringBuffer(); ret.append(getCOLUMN_NAME()); ret.append(" "); ret.append(getColumntypeInstance().getDDL()); return ret.toString(); } public void printinfo(){ System.out.println("TABLE_CAT\t:" + getTABLE_CAT()); System.out.println("TABLE_SCHEM\t:" + getTABLE_SCHEM()); System.out.println("TABLE_NAME\t:" + getTABLE_NAME()); System.out.println("COLUMN_NAME\t:" + getCOLUMN_NAME()); System.out.println("DATA_TYPE\t:" + getDATA_TYPE()); System.out.println("TYPE_NAME\t:" + getTYPE_NAME()); System.out.println("COLUMN_SIZE\t:" + getCOLUMN_SIZE()); System.out.println("BUFFER_LENGTH\t:" + getBUFFER_LENGTH()); System.out.println("DECIMAL_DIGITS\t:" + getDECIMAL_DIGITS()); System.out.println("NUM_PREC_RADIX\t:" + getNUM_PREC_RADIX()); System.out.println("NULLABLE\t:" + getNULLABLE()); System.out.println("NULLABLE\t:" + getNULLABLE()); System.out.println("COLUMN_DEF\t:" + getCOLUMN_DEF()); System.out.println("SQL_DATA_TYPE\t:" + getSQL_DATA_TYPE()); System.out.println("SQL_DATETIME_SUB\t:" + getSQL_DATETIME_SUB()); System.out.println("CHAR_OCTET_LENGTH\t:" + getCHAR_OCTET_LENGTH()); System.out.println("ORDINAL_POSITION\t:" + getORDINAL_POSITION()); System.out.println("IS_NULLABLE\t:" + getIS_NULLABLE()); System.out.println("JDBC_DATA_TYPE\t:" + getJDBC_DATA_TYPE()); System.out.println("PSEUDO_COLUMN\t:" + getPSEUDO_COLUMN()); System.out.println("COLUMN_TEXT\t:" + getCOLUMN_TEXT()); } abstract public IColumntype getColumntypeInstance(); public void setByRs(ResultSet rs) { try { setTABLE_CAT(ColumnUtil.getTABLE_CAT(rs)); setTABLE_SCHEM(ColumnUtil.getTABLE_SCHEM(rs)); setTABLE_NAME(ColumnUtil.getTABLE_NAME(rs)); setCOLUMN_NAME(ColumnUtil.getCOLUMN_NAME(rs)); setDATA_TYPE(ColumnUtil.getDATA_TYPE(rs)); setTYPE_NAME(ColumnUtil.getTYPE_NAME(rs)); setCOLUMN_SIZE(ColumnUtil.getCOLUMN_SIZE(rs)); setBUFFER_LENGTH(ColumnUtil.getBUFFER_LENGTH(rs)); setDECIMAL_DIGITS(ColumnUtil.getDECIMAL_DIGITS(rs)); setNUM_PREC_RADIX(ColumnUtil.getNUM_PREC_RADIX(rs)); setNULLABLE(ColumnUtil.getNULLABLE(rs)); setREMARKS(ColumnUtil.getREMARKS(rs)); setCOLUMN_DEF(ColumnUtil.getCOLUMN_DEF(rs)); setSQL_DATA_TYPE(ColumnUtil.getSQL_DATA_TYPE(rs)); setSQL_DATETIME_SUB(ColumnUtil.getSQL_DATETIME_SUB(rs)); setCHAR_OCTET_LENGTH(ColumnUtil.getCHAR_OCTET_LENGTH(rs)); setORDINAL_POSITION(ColumnUtil.getORDINAL_POSITION(rs)); setBUFFER_LENGTH(ColumnUtil.getBUFFER_LENGTH(rs)); setIS_NULLABLE(ColumnUtil.getIS_NULLABLE(rs)); setJDBC_DATA_TYPE(ColumnUtil.getJDBC_DATA_TYPE(rs)); setPSEUDO_COLUMN(ColumnUtil.getPSEUDO_COLUMN(rs)); setCOLUMN_TEXT(ColumnUtil.getCOLUMN_TEXT(rs)); } catch (SQLException e) { } } public void setByColumn(Column item) { setTABLE_CAT(item.getTABLE_CAT()); setTABLE_SCHEM(item.getTABLE_SCHEM()); setTABLE_NAME(item.getTABLE_NAME()); setCOLUMN_NAME(item.getCOLUMN_NAME()); setDATA_TYPE(convDATA_TYPE(item)); setTYPE_NAME(item.getTYPE_NAME()); setCOLUMN_SIZE(item.getCOLUMN_SIZE()); setBUFFER_LENGTH(item.getBUFFER_LENGTH()); setDECIMAL_DIGITS(item.getDECIMAL_DIGITS()); setNUM_PREC_RADIX(item.getNUM_PREC_RADIX()); setNULLABLE(item.getNULLABLE()); setREMARKS(item.getREMARKS()); setCOLUMN_DEF(item.getCOLUMN_DEF()); setSQL_DATA_TYPE(item.getSQL_DATA_TYPE()); setSQL_DATETIME_SUB(item.getSQL_DATETIME_SUB()); setCHAR_OCTET_LENGTH(item.getCHAR_OCTET_LENGTH()); setORDINAL_POSITION(item.getORDINAL_POSITION()); setBUFFER_LENGTH(item.getBUFFER_LENGTH()); setIS_NULLABLE(item.getIS_NULLABLE()); setJDBC_DATA_TYPE(item.getJDBC_DATA_TYPE()); setPSEUDO_COLUMN(item.getPSEUDO_COLUMN()); setCOLUMN_TEXT(item.getCOLUMN_TEXT()); } abstract public int convDATA_TYPE(Column item); } ***ColumnDB2JDBC [#l70c25d8] package base; public class ColumnDB2JDBC extends Column { public static final int DATA_TYPE_BIGINT = -5; public static final int DATA_TYPE_INTEGER = 4; public static final int DATA_TYPE_SMALLINT = 5; public static final int DATA_TYPE_DECIMAL = 3; public static final int DATA_TYPE_NUMERIC = 2; public static final int DATA_TYPE_DOUBLE_PRECISION = 8; public static final int DATA_TYPE_REAL = 7; public static final int DATA_TYPE_CHARACTER = 1; public static final int DATA_TYPE_CHARACTER_FOR_BIT_DATA = -2; public static final int DATA_TYPE_VARCHAR = 12; public static final int DATA_TYPE_VARCHAR_FOR_BIT_DATA = -3; public static final int DATA_TYPE_CLOB = 40; public static final int DATA_TYPE_GRAPHIC = -95; public static final int DATA_TYPE_VARGRAPHIC = -96; public static final int DATA_TYPE_DBCLOB = -350; public static final int DATA_TYPE_BINARY = -2; public static final int DATA_TYPE_VARBINARY = -3; public static final int DATA_TYPE_BLOB =30; public static final int DATA_TYPE_DATE = 91; public static final int DATA_TYPE_TIME = 92; public static final int DATA_TYPE_TIMESTAMP = 93; public static final int DATA_TYPE_DATALINK = 70; public static final int DATA_TYPE_ROWID = -100; public static final int DATA_TYPE_DISTINCT = 17; public IColumntype getColumntypeInstance() { // TODO 自動生成されたメソッド・スタブ return null; } public int convDATA_TYPE(Column item) { return -1; } } ***ColumnDB2ODBC [#t5dae814] package base; public class ColumnDB2ODBC extends Column { public static final int DATA_TYPE_BIGINT = -5; public static final int DATA_TYPE_INTEGER = 4; public static final int DATA_TYPE_SMALLINT = 5; public static final int DATA_TYPE_DECIMAL = 3; public static final int DATA_TYPE_NUMERIC = 2; public static final int DATA_TYPE_DOUBLE_PRECISION = 8; public static final int DATA_TYPE_REAL = 7; public static final int DATA_TYPE_CHARACTER = 1; public static final int DATA_TYPE_CHARACTER_FOR_BIT_DATA = -2; public static final int DATA_TYPE_VARCHAR = 12; public static final int DATA_TYPE_VARCHAR_FOR_BIT_DATA = -3; public static final int DATA_TYPE_CLOB = 2005; public static final int DATA_TYPE_GRAPHIC = 1; public static final int DATA_TYPE_VARGRAPHIC = 12; public static final int DATA_TYPE_DBCLOB = 1111; public static final int DATA_TYPE_BINARY = -2; public static final int DATA_TYPE_VARBINARY = -3; public static final int DATA_TYPE_BLOB =2004; public static final int DATA_TYPE_DATE = 91; public static final int DATA_TYPE_TIME = 92; public static final int DATA_TYPE_TIMESTAMP = 93; public static final int DATA_TYPE_DATALINK = 70; public static final int DATA_TYPE_ROWID = 1111; public static final int DATA_TYPE_DISTINCT = 2001; public IColumntype getColumntypeInstance() { // TODO 自動生成されたメソッド・スタブ return null; } public int convDATA_TYPE(Column item) { return -1; } } ***ColumnList [#ub0ee196] package base; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class ColumnList extends Ary { //コネクション private ConnectionAutoClose _con; //コンストラクター public ColumnList(ConnectionAutoClose con,String tablename) throws SQLException{ _con = con; // ステートメントオブジェクトを生成 DatabaseMetaData dmd = _con.getMetaData(); ResultSet rs = null; rs = dmd.getColumns(null, null,tablename,null); try { while(rs.next()){ //テーブルのアイテムを追加します。 Column column = null; if (_con instanceof ConnectionSQLite){ column = new ColumnSQLite(); } else if (_con instanceof ConnectionODBC){ column = new ColumnDB2ODBC(); } column.setByRs(rs); add(column); } } catch (Exception e) { e.printStackTrace(); } finally { rs.close(); } } //アイテムを返します。 public Column getItem(int index){ return (Column)get(index); } //テーブル名一覧を返します。 public ArrayList getColumnNameList(){ ArrayList ret = new ArrayList(); for (int i = 0; i < size(); i++) { ret.add(getItem(i).getCOLUMN_NAME()); } return ret; } /** * DDLを生成します。 * @return */ public String makeDDL() { StringBuffer ret = new StringBuffer(); Column column; for (int i = 0; i < size(); i++) { column = (Column) get(i); ret.append(column.makeDDL()); ret.append(","); } return ret.toString(); } public void printinfo(){ for (int i = 0; i < size(); i++) { System.out.println("----------"); getItem(i).printinfo(); } } public void addItem(Column newColumn) { add(newColumn); } } ***ColumnMdbODBC [#g32591b6] package base; public class ColumnMdbODBC extends Column { public static final int DATA_TYPE_BIGINT = -5; public static final int DATA_TYPE_INTEGER = 4; public static final int DATA_TYPE_SMALLINT = 5; public static final int DATA_TYPE_DECIMAL = 3; public static final int DATA_TYPE_NUMERIC = 2; public static final int DATA_TYPE_DOUBLE_PRECISION = 8; public static final int DATA_TYPE_REAL = 7; public static final int DATA_TYPE_CHARACTER = 1; public static final int DATA_TYPE_CHARACTER_FOR_BIT_DATA = -2; public static final int DATA_TYPE_VARCHAR = 12; public static final int DATA_TYPE_VARCHAR_FOR_BIT_DATA = -3; public static final int DATA_TYPE_CLOB = 2005; public static final int DATA_TYPE_GRAPHIC = 1; public static final int DATA_TYPE_VARGRAPHIC = 12; public static final int DATA_TYPE_DBCLOB = 1111; public static final int DATA_TYPE_BINARY = -2; public static final int DATA_TYPE_VARBINARY = -3; public static final int DATA_TYPE_BLOB =2004; public static final int DATA_TYPE_DATE = 91; public static final int DATA_TYPE_TIME = 92; public static final int DATA_TYPE_TIMESTAMP = 93; public static final int DATA_TYPE_DATALINK = 70; public static final int DATA_TYPE_ROWID = 1111; public static final int DATA_TYPE_DISTINCT = 2001; public IColumntype getColumntypeInstance() { // TODO 自動生成されたメソッド・スタブ return null; } public int convDATA_TYPE(Column item) { return -1; } } ***ColumnSQLite [#d7b85239] package base; public class ColumnSQLite extends Column { public static final int DATA_TYPE_INTEGER = 1; public static final int DATA_TYPE_VARCHAR = 3; public static final int DATA_TYPE_BLOB = 4; public static final int DATA_TYPE_NULL = 5; public static final int DATA_TYPE_FLOAT = 2; public IColumntype getColumntypeInstance() { IColumntype ret = null; if (getDATA_TYPE() == DATA_TYPE_VARCHAR){ ret = new VarcharColum(); } else if (getDATA_TYPE() == DATA_TYPE_INTEGER){ ret = new IntegerColumn(); } else if (getDATA_TYPE() == DATA_TYPE_BLOB){ ret = new IntegerColumn(); } else if (getDATA_TYPE() == DATA_TYPE_FLOAT){ ret = new IntegerColumn(); } else { ret = new NullColumn(); } return ret; } //DBがサポートするデータタイプのクラスを返します。 class IntegerColumn implements IColumntype{ public String getDDL() { String ret = "INTEGER"; if ("0".equals(getIS_NULLABLE())){ ret = ret + getIS_NULLABLE(); } return ret; } } class VarcharColum implements IColumntype{ public String getDDL() { String ret = "VARCHAR(" + getCOLUMN_SIZE() +")"; return ret; } } class BlobColumn implements IColumntype{ public String getDDL() { String ret = "BLOB"; return ret; } } class NullColumn implements IColumntype{ public String getDDL() { return ""; } } class FloatColumn implements IColumntype{ public String getDDL() { String ret = "FLOAT"; return ret; } } public int convDATA_TYPE(Column item) { if (item instanceof ColumnMdbODBC){ switch (item.getDATA_TYPE()){ case ColumnMdbODBC.DATA_TYPE_BIGINT: return DATA_TYPE_INTEGER; default: System.out.println("未定義:item.getDATA_TYPE()"+item.getDATA_TYPE()); return -1; } } else { System.out.println("未定義:item"+item.getClass().getName()); return -1; } } } ***ColumnUtil [#g384ef38] package base; import java.sql.ResultSet; import java.sql.SQLException; /**<P> * 検索結果に格納されたカラム情報の結果をキーからJavaのシンボルに切り替える * </P> */ public class ColumnUtil { //TABLE_CAT public static String getTABLE_CAT(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("TABLE_CAT"); } catch (Exception e) { return ""; } } //TABLE_SCHEM public static String getTABLE_SCHEM(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("TABLE_SCHEM"); } catch (Exception e) { return ""; } } //TABLE_NAME public static String getTABLE_NAME(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("TABLE_NAME"); } catch (Exception e) { return ""; } } //COLUMN_NAME public static String getCOLUMN_NAME(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("COLUMN_NAME"); } catch (Exception e) { return ""; } } //DATA_TYPE public static int getDATA_TYPE(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("DATA_TYPE"); } //TYPE_NAME public static String getTYPE_NAME(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("TYPE_NAME"); } catch (Exception e) { return ""; } } //COLUMN_SIZE public static int getCOLUMN_SIZE(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("COLUMN_SIZE"); } //BUFFER_LENGTH public static int getBUFFER_LENGTH(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getInt("BUFFER_LENGTH"); } catch (SQLException e) { return -1; } } //DECIMAL_DIGITS public static int getDECIMAL_DIGITS(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("DECIMAL_DIGITS"); } //NUM_PREC_RADIX public static int getNUM_PREC_RADIX(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("NUM_PREC_RADIX"); } //NULLABLE public static int getNULLABLE(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("NULLABLE"); } //REMARKS public static String getREMARKS(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("REMARKS"); } catch (Exception e) { return ""; } } //COLUMN_DEF public static String getCOLUMN_DEF(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("COLUMN_DEF"); } catch (Exception e) { return ""; } } //SQL_DATA_TYPE public static int getSQL_DATA_TYPE(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getInt("SQL_DATA_TYPE"); } catch (Exception e) { return -1; } } //SQL_DATETIME_SUB public static int getSQL_DATETIME_SUB(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("SQL_DATETIME_SUB"); } //CHAR_OCTET_LENGTH public static int getCHAR_OCTET_LENGTH(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("CHAR_OCTET_LENGTH"); } //ORDINAL_POSITION public static int getORDINAL_POSITION(ResultSet rsColumns) throws SQLException{ return rsColumns.getInt("ORDINAL_POSITION"); } //IS_NULLABLE public static String getIS_NULLABLE(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("IS_NULLABLE"); } catch (Exception e) { return ""; } } //JDBC_DATA_TYPE public static int getJDBC_DATA_TYPE(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getInt("JDBC_DATA_TYPE"); } catch (Exception e) { return -1; } } //PSEUDO_COLUMN public static int getPSEUDO_COLUMN(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getInt("PSEUDO_COLUMN"); } catch (Exception e) { return -1; } } //COLUMN_TEXT public static String getCOLUMN_TEXT(ResultSet rsColumns) throws SQLException{ try { return rsColumns.getString("COLUMN_TEXT"); } catch (Exception e) { return ""; } } } ***ConnectionAutoClose [#e0c73226] package base; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.SQLWarning; import java.sql.Savepoint; import java.sql.Statement; import java.util.Map; abstract public class ConnectionAutoClose implements java.sql.Connection{ // ドライバクラスをロード public static Class odbc = null; public Connection connection = null; //自動クローズ protected void finalize() { try { if (!isClosed()){ close(); } } catch (SQLException e) { } } public void clearWarnings() throws SQLException { connection.clearWarnings(); } public void close() throws SQLException { connection.close(); } public void commit() throws SQLException { connection.commit(); } public Statement createStatement() throws SQLException { return connection.createStatement(); } public Statement createStatement(int arg0, int arg1, int arg2) throws SQLException { return connection.createStatement(arg0, arg1, arg2); } public Statement createStatement(int arg0, int arg1) throws SQLException { return connection.createStatement(arg0, arg1); } public boolean getAutoCommit() throws SQLException { return connection.getAutoCommit(); } public String getCatalog() throws SQLException { return connection.getCatalog(); } public int getHoldability() throws SQLException { return connection.getHoldability(); } public DatabaseMetaData getMetaData() throws SQLException { return connection.getMetaData(); } public int getTransactionIsolation() throws SQLException { return connection.getTransactionIsolation(); } public Map getTypeMap() throws SQLException { return connection.getTypeMap(); } public SQLWarning getWarnings() throws SQLException { return connection.getWarnings(); } public boolean isClosed() throws SQLException { return connection.isClosed(); } public boolean isReadOnly() throws SQLException { return connection.isReadOnly(); } public String nativeSQL(String arg0) throws SQLException { return connection.nativeSQL(arg0); } public CallableStatement prepareCall(String arg0, int arg1, int arg2, int arg3) throws SQLException { return connection.prepareCall(arg0, arg1, arg2, arg3); } public CallableStatement prepareCall(String arg0, int arg1, int arg2) throws SQLException { return connection.prepareCall(arg0, arg1, arg2); } public CallableStatement prepareCall(String arg0) throws SQLException { return connection.prepareCall(arg0); } public PreparedStatement prepareStatement(String arg0, int arg1, int arg2, int arg3) throws SQLException { return connection.prepareStatement(arg0, arg1, arg2, arg3); } public PreparedStatement prepareStatement(String arg0, int arg1, int arg2) throws SQLException { return connection.prepareStatement(arg0, arg1, arg2); } public PreparedStatement prepareStatement(String arg0, int arg1) throws SQLException { return connection.prepareStatement(arg0, arg1); } public PreparedStatement prepareStatement(String arg0, int[] arg1) throws SQLException { return connection.prepareStatement(arg0, arg1); } public PreparedStatement prepareStatement(String arg0, String[] arg1) throws SQLException { return connection.prepareStatement(arg0, arg1); } public PreparedStatement prepareStatement(String arg0) throws SQLException { return connection.prepareStatement(arg0); } public void releaseSavepoint(Savepoint arg0) throws SQLException { connection.releaseSavepoint(arg0); } public void rollback() throws SQLException { connection.rollback(); } public void rollback(Savepoint arg0) throws SQLException { connection.rollback(arg0); } public void setAutoCommit(boolean arg0) throws SQLException { connection.setAutoCommit(arg0); } public void setCatalog(String arg0) throws SQLException { connection.setCatalog(arg0); } public void setHoldability(int arg0) throws SQLException { connection.setHoldability(arg0); } public void setReadOnly(boolean arg0) throws SQLException { connection.setReadOnly(arg0); } public Savepoint setSavepoint() throws SQLException { return connection.setSavepoint(); } public Savepoint setSavepoint(String arg0) throws SQLException { return connection.setSavepoint(arg0); } public void setTransactionIsolation(int arg0) throws SQLException { connection.setTransactionIsolation(arg0); } public void setTypeMap(Map arg0) throws SQLException { connection.setTypeMap(arg0); } public TableList getTableList() throws SQLException { return new TableList(this); } public void execute(String ddl) { } } ***ConnectionODBC [#e9407146] package base; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionODBC extends ConnectionAutoClose{ //コンストラクタ public ConnectionODBC(String name) throws ClassNotFoundException, SQLException{ super(); if (odbc == null){ odbc = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); connection = DriverManager.getConnection("jdbc:odbc:" + name); } } } ***ConnectionSQLite [#ya08223f] package base; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionSQLite extends ConnectionAutoClose{ //コンストラクタ public ConnectionSQLite(String name) throws ClassNotFoundException, SQLException{ super(); if (odbc == null || connection == null){ odbc = Class.forName("org.sqlite.JDBC"); connection = DriverManager.getConnection("jdbc:sqlite:/" + name); } } } ***IColumntype [#o30ac269] package base; public interface IColumntype { public String getDDL(); } ***IDataType [#z851fa6b] package base; public interface IDataType { public String makeDDL(); } ***Table [#bb08c5ca] package base; import java.sql.SQLException; import java.util.ArrayList; public class Table { public String _name; public String _type; public ConnectionAutoClose _con; private ColumnList columnlist = null; public Table(ConnectionAutoClose con,String name, String type) { _name = name; _type = type; _con = con; } public ColumnList getColumnList() throws SQLException { if (columnlist == null){ columnlist = new ColumnList(_con, _name); } return columnlist; } //テーブルを複製します。 public void copy(ConnectionAutoClose con) throws SQLException { //conにテープル追加 if (!con.getTableList().exist(_name)){ Table newTable = new Table(con,_name,_type); con.getTableList().add(newTable); //カラムの追加 ColumnList list = getColumnList(); for (int i = 0; i < list.size(); i++) { Column newColumn = new ColumnSQLite(); newColumn.setByColumn(list.getItem(i)); newTable.getColumnList().addItem(newColumn); } String ddl = "CREATE TABLE " + _name + " (" + newTable.getColumnList().makeDDL() + //カラム "PRIMARY KEY(" + ")" + ")"; con.execute(ddl); } else { System.out.println(_name + "はすでにあります。"); } } } ***TableList [#r5a7bff9] package base; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class TableList extends Ary { //コネクション private ConnectionAutoClose _con; //コンストラクター public TableList(ConnectionAutoClose con) throws SQLException{ _con = con; // ステートメントオブジェクトを生成 //Statement stmt = _con.createStatement(); DatabaseMetaData dmd = _con.getMetaData(); String types[] = { "TABLE" }; ResultSet rs = null; rs = dmd.getTables(null, null,"%", types); try { while(rs.next()){ //テーブルのアイテムを追加します。 Table table = new Table(_con,rs.getString("TABLE_NAME"),rs.getString("TABLE_TYPE")); add(table); } } finally { rs.close(); } } //アイテムを返します。 public Table getItem(int index){ return (Table)get(index); } //テーブル名一覧を返します。 public ArrayList getTableNameList(){ ArrayList ret = new ArrayList(); for (int i = 0; i < size(); i++) { ret.add(getItem(i)._name); } return ret; } public boolean exist(String _name) { String name; for (int i = 0; i < size(); i++) { if (getItem(i)._name.equals(_name)){ return true; } } return false; } }
テキスト整形のルールを表示する