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