- 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コードが削除されることが多々ある。 故に、次のステッ...