ホームページ >バックエンド開発 >C#.Net チュートリアル >ado.net とは何か、およびその簡単な実装の詳細
1. はじめに
Ado.netは、主にSqlConnection、SqlCommand、SqlDataReader、DataSetの5つのオブジェクトで構成されています
1。 SqlConnection クラス SQL サーバー データベースへの接続を表します
接続文字列の形式は一般に次の 2 つの形式があります。具体的なパラメーターについては、msdn
を参照してください 1) Persist Security Info=False;Integrated Security=true;Initial Catalog=。 Northwind;server=(local )
2) Server=.;Database=demodb;User=sa;Password=123;
以下のように接続を作成します
SqlConnectionconn =new平方接続 (connString );
2. SqlCommandクラスはデータベース実行コマンドオブジェクトを表します
1) SQLスクリプトまたはストアドプロシージャ、タイムアウト、パラメータ、および必要なトランザクションを設定するために使用されます。実行されました。
// ; " " " 3) いくつかの主なメソッド " " " 操作 utexeceExectEreader:クエリを実行してsqldatareaderオブジェクトを返しますculescalar:queryを実行して結果セットの最初の行と列を返すことがデータベースに接続されます。 SqlDataAdapter(); string selectCommandText, SqlConnection selectConnection); mandText , string selectConnectionString); 4.SqlDataReader クラスは、データ フローのみで読み取る方法を提供します 5.DataSet クラスは、メモリ内のデータのキャッシュを表します 2. ADO.NET の単純な実装 以下は、追加、削除、変更と確認 上記のコードは、Oracle などの別のデータベースを実装する場合にのみ有効であり、.Net が提供する別のコード セットを作成する必要があります。別のデータベース インスタンスを作成するための DbProviderFactory クラス。 同時に、上記の 5 つの主要なオブジェクトも DbConnection、DbCommand、DbDataReader、および DbDataAdapter に置き換えて、特定の SQL サーバー オブジェクトをより具体的でデータベースの種類に依存しないオブジェクトに抽象化する必要があります。 public class EasySqlHelper
{
//web.config来配置
//private static string connString = ConfigurationManager.AppSettings["SqlConnectionString"];
private static string connString = "Server=.;Database=demodb;User=sa;Password=123;";
public static int ExecuteNonQuery(string sql)
{
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
return cmd.ExecuteNonQuery();
}
}
}
public static SqlDataReader ExecuteReader(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader rdr = null;
try
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
rdr = cmd.ExecuteReader();
}
catch (SqlException ex)
{
conn.Dispose();
cmd.Dispose();
if (rdr != null)
{
rdr.Dispose();
}
throw ex;
}
finally
{
cmd.Dispose();
}
return rdr;
}
public static DataTable ExecuteDataTable(string sql)
{
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
return ds.Tables[0];
}
}
}
}
IDisposable インターフェースを実装するすべてのクラスは using を使用して解放でき、呼び出しメソッドで例外が発生した場合でも解放されます。物体。 //// <summary>
/// 连接信息
/// </summary>
public class ConnectionInfo
{
private string _connectionString;
private string _providerName;
/// <summary>
/// 连接字符串
/// </summary>
public string ConnectionString
{
get { return _connectionString; }
}
/// <summary>
/// 提供程序的固定名称
/// </summary>
public string ProviderName
{
get { return _providerName; }
}
public ConnectionInfo(string connectionString, string providerName)
{
_connectionString = connectionString;
_providerName = providerName;
}
}
public class MySqlHelper
{
private static DbProviderFactory dbProvider;
private static readonly ConnectionInfo connInfo = new ConnectionInfo("Server=.;Database=demodb;User=sa;Password=123;", "System.Data.SqlClient");
private static void GetProvider()
{
dbProvider = DbProviderFactories.GetFactory(connInfo.ProviderName);
}
static MySqlHelper()
{
GetProvider();
}
public static int ExecuteNonQuery(string sql, DbParameter[] parameters)
{
int flag = 0;
using (DbConnection conn = dbProvider.CreateConnection())
{
conn.ConnectionString = connInfo.ConnectionString;
conn.Open();
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
if (parameters != null && parameters.Length > 0)
{
cmd.Parameters.AddRange(parameters);
}
flag = cmd.ExecuteNonQuery();
}
}
return flag;
}
public static void ExecuteReader(string sql, DbParameter[] parameters, Action<IDataReader> action)
{
IDataReader rdr = null;
using (DbConnection conn = dbProvider.CreateConnection())
{
conn.ConnectionString = connInfo.ConnectionString;
conn.Open();
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
if (parameters != null && parameters.Length > 0)
{
cmd.Parameters.AddRange(parameters);
}
rdr = cmd.ExecuteReader();
action(rdr);
rdr.Close();
}
}
}
public static DataTable ExecuteDataTable(string sql, DbParameter[] parameters)
{
DataTable dt = null;
using (DbConnection conn = dbProvider.CreateConnection())
{
conn.ConnectionString = connInfo.ConnectionString;
conn.Open();
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
if (parameters != null && parameters.Length > 0)
{
cmd.Parameters.AddRange(parameters);
}
IDataReader rdr = cmd.ExecuteReader();
dt = new DataTable();
dt.Load(rdr);
rdr.Close();
}
return dt;
}
}
}
4. その他のサードパーティフレームワーク Dapper、IBatis.Net などがあり、参照して学ぶことができます
1 ASP.NET の無料ビデオ。チュートリアル
2. Ado.Netを使用してExcelテーブルにデータを更新および追加するADO.NETのEXCEL実装コード((c#))
4.手順
5.
ado.net接続とデータベースコード以上がado.net とは何か、およびその簡単な実装の詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。