.netデータベース操作

7288 ワード

データベースに接触したばかりの時、いつもデータベースの中の基本概念によって、例えばConnection、Command、Data Readerなど、全部のものがぼんやりしています。今は、データベースの基本的な操作について一定の認識を持っています。
Microsoftは、いくつかの一般的なデータソースの操作を提供しています。Sql serverデータベース、OLEDデータソース、ODBCデータソース、Oracleデータベース、これらのいくつかの通常の操作については大同小異とも言えます。ここではSql serverデータベースの操作をConnection、Command、DataSet、Datadapter、DataReaderの紹介を行います。
 
Sql Connection:
Sql connectionは対象がsql serverデータベースに接続するので、プログラマはデータベースのすべての操作をデータベースに接続した上で構築します。だから、基本的な理解が必要です。
Sql Connectionの基本文法は(接続文を取る):Data Source=192.168.100.46;Initial Catalog=database;User ID=saPassword=sa
実際の操作過程でよく配置ファイルに入れて、後で変更するために、もちろんその基本項目をフロントインターフェースに置いて操作を記入することもできます。
設定ファイルに入れます。参照コード:
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="ConnectionString" value="Data Source=192.168.100.46;Initial Catalog=database;User ID=sa;Password=sa"/>
    </appSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
Sql Connectionは対象がデータベースに接続されています。
 
Sql Command:
オブジェクトとデータベースが接続された後、Commandオブジェクトを使用して、データベースを追加、削除、変更、検索などの基本的な操作ができます。Commandオブジェクトの一般的な属性とその方法を簡単に紹介します。
通常の属性:
Command Type:Commandオブジェクトを取得または設定する命令の種類
CommandText:データソースに対して実行するSQL文、格納プロセスまたはテーブル名を取得または設定する。
CommundTimeOut:コマンド実行の試みを終了し、エラーを生成するまでの待ち時間を取得または設定します。
Connection:このCommandオブジェクトで使用するConnectionオブジェクトの名前を取得または設定します。
Parameeters:Commandオブジェクトが使用するパラメータセットを取得します。
常用方法:
Execute NonQuery:sql文を実行し、影響を受ける行数を返します。
ExecuteReader:リターンデータセットのselect文を実行します。
ExecuteScaar:クエリーを実行し、クエリーが返される結果セットの最初の行の第一列
Sql Commandはデータベースを変更したり調整したりする時に使うものです。使用後はデータベースが変わります。
 
DataSet:
DataSetはデータベース操作中のコアオブジェクトで、切断式、分散型データスキームのコアオブジェクトをサポートします。DataSetオブジェクトは、メモリ内に作成されたセットオブジェクトで、任意の数のデータテーブルと、すべてのテーブルの制約、インデックス、および関係を含むことができます。一方、datasetオブジェクトのセットは、データと関連付けることができ、各dataTableオブジェクトは、Data ColumnおよびDataRowオブジェクトからなる。
DataSetの一般的な動作:
プログラミング方式でDataSetでdataTable、DataRelation、Contstrationを作成し、データ充填テーブルを使用します。
DataAdapterでdataSetを充填する
XMLを使ってDataSetの内容をロードして保持します。
DataSetはデータを保存する小型データベースで、データベース接続を切断した後の操作をサポートします。
 
 DataAdapter:
DataAdapterオブジェクトは、データソースからデータを検索したり、DataSetオブジェクト中のテーブルを塗りつぶしたり、DataSetに対するユーザの変更をデータベースに書き込みます。
通常の属性:
selectCommand:データソースでレコードを選択するコマンドを取得または設定します。
InsertCommand:新しいレコードをデータベースに挿入するコマンドを取得または設定します。
UpdateCommand:データソースに記録されているコマンドを取得または設定します。
DeleteCommand:データセットからレコードを削除するコマンドを取得または設定します。
常用方法:
Fill:データソースからデータを抽出してデータセットを充填する
Update:データソースの更新
Data AdapterはdataSetとデータソースを接続するためのペアです。
 
Data Reader:
DataReaderはデータソースから読み取り専用のデータセットを検索するための簡単なデータセットで、大量のデータを検索するのによく使われています。DataReaderはデータを読み出すたびにメモリの中に1行だけ記録を残し、オーバーヘッドが非常に小さい。
CommandオブジェクトのExecuteReader方法からデータソースからデータを検索してData Readerオブジェクトを作成することができます。例えば:Sql Data Reader sdr=cmd.ExecuteReader()
常用方法:
FieldCount:現在の行の列数を取得します。
RecordsAffectde:SQL文の変更、追加または削除を実行する行数を取得します。
常用方法:
Read:Data Readerオブジェクトを使って次のレコードに進む
Close:Data Readerオブジェクトを閉じる
Get:データセットの現在の行のレコードを読み取るために使用されます。
Data Readerはデータソースを読み出すたびにメモリに行の記録を残します。
 
総合運用:
実際のプロジェクト開発では三層構造を使ってデータベースを操作しますが、一番下の直接操作データベースは上記の基本概念を総合的に運用します。ここでは最もよく使われている二つの方法を選択して参考にしてください。
connection Stering:データベース接続文
SQLString:sql文
 
//クエリー文を実行し、datasetに戻ります。
public static DataSet Query(string strSql)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                DataSet ds = new DataSet();

                try
                {
                    conn.Open();
                    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(strSql, conn);
                    sqlDataAdapter.Fill(ds, "ds");
                }
                catch (SqlException ex)
                {
                    throw new Exception(ex.Message);
                }

                return ds;
            }
        }
 
//sql文を実行し、影響の記録数を返します。
public static int ExecuteSql(string strSql)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(strSql, conn))
                {
                    try
                    {
                        conn.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                    }
                    catch (SqlException ex)
                    {
                        conn.Close();
                        throw new Exception(ex.Message);
                    }
                }
            }
        }
 
まとめ:ここに紹介します。後はもっと深い理解があれば、補充します。