- Choose Good Field Names 為欄位選擇一個好名字
- Keep it short and simple. 越短越簡單越好。但是不要短到像暗號一樣。
- CapitalizeLikeThis. 適當的作出大小寫區分
- Avoid spaces. 避免使用空白
- Be consistent. 保持一貫性
- Don’t repeat the table name. 不要重複表格名
- Don’t use the field name “Name.” 不要把欄位命名作Name
- Break Down Your Information 切割資訊
- Include All the Details in One Place 把所有的細節放在一起
- Avoid Duplicating Information 避免重複資訊
- Avoid Redundant Information 避免無謂的資訊
- Include an ID Field 留一個ID欄
SyntaxHighlighter
2013-04-25
Six Principles of Database Design 資料庫設計的六個原則
節錄自Oreilly的Access 2010 Missing Manual
2013-04-05
Something about the CODEs in Blog
make the code in your blog showed "PRETTY".
http://werdna1222coldcodes.blogspot.jp/2012/02/blog-post.html
In face, I use the Google pretty and the CodeBlock...
so, Just choose as u like ;)
http://werdna1222coldcodes.blogspot.jp/2012/02/blog-post.html
In face, I use the Google pretty and the CodeBlock...
so, Just choose as u like ;)
Connect to Databases in C#
今回はC#でSQLiteやMySQLに繋ぎ方法を記録する。
一言で言うと、SQL Serverとの繋ぎはほぼ似ている。
ただし使用するメソッド/オブジェクトを
さて、本題に入る。先ずは基本のSQL serverに行こう。
することは全部同じ。
続き、似ている内容で、SQLiteでしましょう。
注意してほしい点は
最後、MySQL(今回はローカルを例にする)でしましょう。
SQLiteの時と同じ、System.Data.MySQLのDLLを取得して下さい。SQLiteの時と同じ、MySQLの公式サイトより無償で手に入れるはず。
一言で言うと、SQL Serverとの繋ぎはほぼ似ている。
ただし使用するメソッド/オブジェクトを
SqlXxx
からSQLiteXxx
あるいはMySqlXxx
に変わるだけ。
さて、本題に入る。先ずは基本のSQL serverに行こう。
することは全部同じ。
- データベースに繋ぎ(連結する)。
- CarというTableを作成。
- テーブルCarにデータを入れる。
- データを出力し、連結をクローズする。
using System; using System.Data.SqlClient; class SQLTest01 { static void Main() { /* Set the connection string * With the setting below: * user id : the userid for SQL server * password or pwd : the password of user * database : the database you want to connect */ string cs = "user id=testuser;" + "password=testpwd;server=localhost;" + "Trusted_Connection=yes;" + "database=dbTest; " + "connection timeout=30"; // Connection to Database // with the new "using" garbage collection using (SqlConnection con = new SqlConnection(cs)) { // Open connection; con.Open(); // Create the Table using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = con; cmd.CommandText = "DROP TABLE IF EXISTS Cars"; cmd.ExecuteNonQuery(); cmd.CommandText = @"CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INT)"; cmd.ExecuteNonQuery(); } // Put Datas into Table using(SqlCommand cmd = new SqlCommand()) { cmd.Connection = con; // do with Prepare(); cmd.CommandText = "INSERT INTO Cars(Id, Name, Price) VALUES(@Id, @Name, @Price)"; cmd.Prepare(); cmd.Parameters.AddWithValue("@Id", 1); cmd.Parameters.AddWithValue("@Name", "Audi"); cmd.Parameters.AddWithValue("@Price", 52642); cmd.ExecuteNonQuery(); cmd.Parameters.AddWithValue("@Id", 2); cmd.Parameters.AddWithValue("@Name", "Mercedes"); cmd.Parameters.AddWithValue("@Price", 57127); cmd.ExecuteNonQuery(); // do with Standard SQL command cmd.CommandText = "INSERT INTO Cars VALUES(3,'Skoda',9000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(4,'Volvo',29000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(5,'Bentley',350000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(6,'Citroen',21000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(7,'Hummer',41400)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(8,'Volkswagen',21600)"; cmd.ExecuteNonQuery(); } // Read Datas with DataReader string stm = "SELECT * FROM Cars LIMIT 5"; using (SqlCommand cmd = new SqlCommand(stm,con)) { using (SqlDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { Console.WriteLine(rdr.GetInt32(0) + " " + rdr.GetString(1) + " " + rdr.GetInt32(2)); } } } // Close connection; con.Close(); } } }
続き、似ている内容で、SQLiteでしましょう。
注意してほしい点は
- 事前にSystem.Data.SQLiteのDLLファイルをプロジェクトのフォルダ下のExternalsにコピーしておくこと。また、プロジェクト設定でそれに参照するように設定して下さい。
- DLLファイルを持っていない場合、SQLite.NET公式サイトあるいはSQLite公式サイトより探して下さい。無償で手に入れるはず。
using System; using System.Data.SQLite; class SQLTest01 { static void Main() { /* Set the connection string * With the setting below: * user id : the userid for SQL server * password or pwd : the password of user * database : the database you want to connect */ string cs = "URI=file:test.db"; // Connection to Database // with the new "using" garbage collection using (SQLiteConnection con = new SQLiteConnection(cs)) { // Open connection; con.Open(); // Create the Table using (SQLiteCommand cmd = new SQLiteCommand()) { cmd.Connection = con; cmd.CommandText = "DROP TABLE IF EXISTS Cars"; cmd.ExecuteNonQuery(); cmd.CommandText = @"CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INT)"; cmd.ExecuteNonQuery(); } // Put Datas into Table using (SQLiteCommand cmd = new SQLiteCommand()) { cmd.Connection = con; // do with Prepare(); cmd.CommandText = "INSERT INTO Cars(Id, Name, Price) VALUES(@Id, @Name, @Price)"; cmd.Prepare(); cmd.Parameters.AddWithValue("@Id", 1); cmd.Parameters.AddWithValue("@Name", "Audi"); cmd.Parameters.AddWithValue("@Price", 52642); cmd.ExecuteNonQuery(); cmd.Parameters.AddWithValue("@Id", 2); cmd.Parameters.AddWithValue("@Name", "Mercedes"); cmd.Parameters.AddWithValue("@Price", 57127); cmd.ExecuteNonQuery(); // do with Standard SQL command cmd.CommandText = "INSERT INTO Cars VALUES(3,'Skoda',9000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(4,'Volvo',29000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(5,'Bentley',350000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(6,'Citroen',21000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(7,'Hummer',41400)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(8,'Volkswagen',21600)"; cmd.ExecuteNonQuery(); } // Read Datas with DataReader string stm = "SELECT * FROM Cars LIMIT 5"; using (SQLiteCommand cmd = new SQLiteCommand(stm, con)) { using (SQLiteDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { Console.WriteLine(rdr.GetInt32(0) + " " + rdr.GetString(1) + " " + rdr.GetInt32(2)); } } } // Close connection; con.Close(); } Console.WriteLine("Press ENTER to continue..."); Console.ReadLine(); } }
最後、MySQL(今回はローカルを例にする)でしましょう。
SQLiteの時と同じ、System.Data.MySQLのDLLを取得して下さい。SQLiteの時と同じ、MySQLの公式サイトより無償で手に入れるはず。
using System; using MySql.Data.MySqlClient; class SQLTest01 { static void Main() { /* Set the connection string * With the setting below: * user id : the userid for SQL server * password or pwd : the password of user * database : the database you want to connect */ string cs = "user id=testuser;" + "password=testpwd;server=localhost;" + "database=testDB; " + "connection timeout=30"; // Connection to Database // with the new "using" garbage collection using (MySqlConnection con = new MySqlConnection(cs)) { // Open connection; con.Open(); // Create the Table using (MySqlCommand cmd = new MySqlCommand()) { cmd.Connection = con; cmd.CommandText = "DROP TABLE IF EXISTS Cars"; cmd.ExecuteNonQuery(); cmd.CommandText = @"CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INT)"; cmd.ExecuteNonQuery(); } // Put Datas into Table using (MySqlCommand cmd = new MySqlCommand()) { cmd.Connection = con; // do with Prepare(); cmd.CommandText = "INSERT INTO Cars(Id, Name, Price) VALUES(1, 'Audi', 52642)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars(Id, Name, Price) VALUES(2, 'Mercedes', 57127)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(3,'Skoda',9000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(4,'Volvo',29000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(5,'Bentley',350000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(6,'Citroen',21000)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(7,'Hummer',41400)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Cars VALUES(8,'Volkswagen',21600)"; cmd.ExecuteNonQuery(); } // Read Datas with DataReader string stm = "SELECT * FROM Cars LIMIT 5"; using (MySqlCommand cmd = new MySqlCommand(stm, con)) { using (MySqlDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { Console.WriteLine(rdr.GetInt32(0) + " " + rdr.GetString(1) + " " + rdr.GetInt32(2)); } } } // Close connection; con.Close(); } } }
登録:
投稿 (Atom)
人気の投稿
-
指令/英文 翻譯1 翻譯2 2D Solid 二維實體 2D 實面 2D Wireframe 二維線框 3D Array 三維陣列 3D 陣列 3D Dynamic View 三維動態觀察 3D 動態檢視 3d objects 三維物體 3D 物件 3D Orbit...
-
ノート程度: 線の太さを画面に反映させる Win: ツール>オプション でオプションウィンドを開き 作図スタイル>アクティブな作図スタイル>線のフォント で [ グラフィック領域で太さを表示]にチェックを入れる。 Mac: System Menu → 設定 /...
-
☆日本一 子煩悩な県 問題: 1.休日はたいてい子どもと遊ぶ 2.配偶者より子どもが大事である 3.外食するときは、まず子どもに何を食べたいか聞く 4.携帯の待ち受けは子どもの写真だ 5.子どもの寝顔を見て感動のあまり泣いたことがある ランキング 1.熊本県 2.北海道 3.山...
-
日本で結婚するときに、台湾の戸籍謄本の訳本が要る。 検索したら、いろいろ有用な先人たちの情報があります。 I♥TAIWAN - 日本小雪さんのブログ、最初ここからスタートして多分いちばん間違いなし。 在日台灣太太連絡簿 - 最低限の必要単語が載っている。 梅と桜 ...
-
這東西搞了兩個多禮拜,終於讓我找到合理的計算方式。 真圓度的計算方法,若使用半徑法,目前有 4種方式(參考Wikipedia(en)資料) 去取假想圓中心。 1. 最小區域圓法 Minimum Zone circle (MZC) 這是ISO及JIS B0621有規定的正式...
-
AutoCADではボタンで1クリック切り替えですけどね DraftSightではややめんどくさい 印刷シート(シートタブ)内で、全空間(モデルタブ)の特定の場所だけ出力させたい時に、ペーパー空間(シート ワークスペース)よりモデル空間(モデル ワークスペース)へ切り替える必...
-
第一關,...沒啥好寫的簡單 右鍵找出網頁原始碼之後就會看到密碼了 h4x0r ...NEXT
-
x64環境のSDKを使ってコンパイルするときに、GWL_WNDPROCなどシステムの定数が使えないことになります。 それは、SDKでは、x64環境であれば(#ifdef _win64)、それらの変数の定義をキャンセルした(undef)のです。 解決法として、GWL_WNDPROC...
-
大多數人使用iReport生成都會使用SQL來抓取資料庫檔案,但是iReport畢竟只是個設計表單用的程式,資料還是要靠Java餵給他。 一般的使用法,就像我以前做的 1. 在iReport中寫死SQL查詢句( SELECT xxx FROM yyy WHERE zzz )...
-
Access 2010の環境で開発する際、新しいファイル(ACCDB)は古いAccessでは使えないため、旧形式のMDBファイルに変換する必要性がある。 但し、変換されたファイルに、VBAコードはうまく変換できない/VBAコードが削除されることが多々ある。 故に、次のステッ...