Heim Backend-Entwicklung C#.Net-Tutorial Detaillierte Erläuterung des ASP.NET-Datenzugriffsklassencodes

Detaillierte Erläuterung des ASP.NET-Datenzugriffsklassencodes

Apr 27, 2017 am 10:08 AM
asp.net

using System; 
using System.Data; 
using System.Data.SqlClient;  
namespace SysClassLibrary 
{ 
/// <summary> 
/// DataAccess 的摘要说明。 
/// <description>数据处理基类,调用方式:DataAccess.DataSet((string)sqlstr);或者DataAccess.DataSet((string)sqlstr,ref DataSet ds); </description> 
/// </summary> 
public class DataAccess 
{ 
#region 属性 
protected static SqlConnection conn=new SqlConnection(); 
protected static SqlCommand comm=new SqlCommand(); 
#endregion 
public DataAccess() 
{ 
//init(); 
} 
#region 内部函数 静态方法中不会执行DataAccess()构造函数 
/// <summary> 
/// 打开数据库连接 
/// </summary> 
private static void openConnection() 
{ 
if (conn.State == ConnectionState.Closed) 
{ 
//SysConfig.ConnectionString 为系统配置类中连接字符串,如:"server=localhost;database=databasename;uid=sa;pwd=;" 
conn.ConnectionString = SysConfig.ConnectionString ; 
comm.Connection =conn; 
try 
{ 
conn.Open(); 
} 
catch(Exception e) 
{ 
throw new Exception(e.Message); 
} 
} 
} 
/// <summary> 
/// 关闭当前数据库连接 
/// </summary> 
private static void closeConnection() 
{ 
if(conn.State == ConnectionState.Open) 
conn.Close(); 
conn.Dispose(); 
comm.Dispose(); 
} 
#endregion 
/// <summary> 
/// 执行Sql查询语句 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
public static void ExecuteSql(string sqlstr) 
{ 
try 
{ 
openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
comm.ExecuteNonQuery();  
} 
catch(Exception e) 
{ 
throw new Exception(e.Message); 
} 
finally 
{ 
closeConnection(); 
} 
} 
/// <summary> 
/// 执行存储过程 
/// </summary> 
/// <param name="procName">存储过程名</param> 
/// <param name="coll">SqlParameters 集合</param> 
public static void ExecutePorcedure(string procName,SqlParameter[] coll) 
{ 
try 
{ 
openConnection(); 
for(int i=0;i<coll.Length;i++) 
{ 
comm.Parameters .Add(coll); 
} 
comm.CommandType=CommandType.StoredProcedure ; 
comm.CommandText =procName; 
comm.ExecuteNonQuery(); 
} 
catch(Exception e) 
{ 
throw new Exception(e.Message); 
} 
finally 
{ 
comm.Parameters.Clear(); 
closeConnection(); 
} 
} 
/// <summary> 
/// 执行存储过程并返回数据集 
/// </summary> 
/// <param name="procName">存储过程名称</param> 
/// <param name="coll">SqlParameter集合</param> 
/// <param name="ds">DataSet </param> 
public static void ExecutePorcedure(string procName,SqlParameter[] coll,ref DataSet ds) 
{ 
try 
{ 
SqlDataAdapter da=new SqlDataAdapter(); 
openConnection(); 
for(int i=0;i<coll.Length;i++) 
{ 
comm.Parameters .Add(coll); 
} 
comm.CommandType=CommandType.StoredProcedure ; 
comm.CommandText =procName; 
da.SelectCommand =comm; 
da.Fill(ds); 
} 
catch(Exception e) 
{ 
throw new Exception(e.Message); 
} 
finally 
{ 
comm.Parameters.Clear(); 
closeConnection(); 
} 
} 
/// <summary> 
/// 执行Sql查询语句并返回第一行的第一条记录,返回值为object 使用时需要拆箱操作 -> Unbox 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
/// <returns>object 返回值 </returns> 
public static object ExecuteScalar(string sqlstr) 
{ 
object obj=new object(); 
try 
{ 
openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
obj=comm.ExecuteScalar();  
} 
catch(Exception e) 
{ 
throw new Exception(e.Message); 
} 
finally 
{ 
closeConnection(); 
} 
return obj; 
} 
/// <summary> 
/// 执行Sql查询语句,同时进行事务处理 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
public static void ExecuteSqlWithTransaction(string sqlstr) 
{ 
SqlTransaction trans ; 
trans=conn.BeginTransaction(); 
comm.Transaction =trans; 
try 
{ 
openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
comm.ExecuteNonQuery();  
trans.Commit(); 
} 
catch 
{ 
trans.Rollback(); 
} 
finally 
{ 
closeConnection(); 
} 
} 
/// <summary> 
/// 返回指定Sql语句的SqlDataReader,请注意,在使用后请关闭本对象,同时将自动调用closeConnection()来关闭数据库连接 
/// 方法关闭数据库连接 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
/// <returns>SqlDataReader对象</returns> 
public static SqlDataReader dataReader(string sqlstr) 
{ 
SqlDataReader dr=null; 
try 
{ 
openConnection(); 
comm.CommandText =sqlstr; 
comm.CommandType =CommandType.Text ; 
dr=comm.ExecuteReader(CommandBehavior.CloseConnection);  
} 
catch 
{ 
try 
{ 
dr.Close(); 
closeConnection(); 
} 
catch 
{ 
} 
} 
return dr; 
} 
/// <summary> 
/// 返回指定Sql语句的SqlDataReader,请注意,在使用后请关闭本对象,同时将自动调用closeConnection()来关闭数据库连接 
/// 方法关闭数据库连接 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
/// <param name="dr">传入的ref DataReader 对象</param> 
public static void dataReader(string sqlstr,ref SqlDataReader dr) 
{ 
try 
{ 
openConnection(); 
comm.CommandText =sqlstr; 
comm.CommandType =CommandType.Text ; 
dr=comm.ExecuteReader(CommandBehavior.CloseConnection);  
} 
catch 
{ 
try 
{ 
if(dr!=null && !dr.IsClosed) 
dr.Close(); 
} 
catch 
{ 
} 
finally 
{ 
closeConnection(); 
} 
} 
} 
/// <summary> 
/// 返回指定Sql语句的DataSet 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
/// <returns>DataSet</returns> 
public static DataSet dataSet(string sqlstr) 
{ 
DataSet ds= new DataSet(); 
SqlDataAdapter da=new SqlDataAdapter(); 
try 
{ 
openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
da.SelectCommand =comm; 
da.Fill(ds); 
} 
catch(Exception e) 
{ 
throw new Exception(e.Message);  
} 
finally 
{ 
closeConnection(); 
} 
return ds; 
} 
/// <summary> 
/// 返回指定Sql语句的DataSet 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
/// <param name="ds">传入的引用DataSet对象</param> 
public static void dataSet(string sqlstr,ref DataSet ds) 
{ 
SqlDataAdapter da=new SqlDataAdapter(); 
try 
{ 
openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
da.SelectCommand =comm; 
da.Fill(ds); 
} 
catch(Exception e) 
{ 
throw new Exception(e.Message);  
} 
finally 
{ 
closeConnection(); 
} 
} 
/// <summary> 
/// 返回指定Sql语句的DataTable 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
/// <returns>DataTable</returns> 
public static DataTable dataTable(string sqlstr) 
{ 
SqlDataAdapter da=new SqlDataAdapter(); 
DataTable datatable=new DataTable(); 
try 
{ 
openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
da.SelectCommand =comm; 
da.Fill(datatable); 
} 
catch(Exception e) 
{ 
throw new Exception(e.Message);  
} 
finally 
{ 
closeConnection(); 
} 
return datatable; 
} 
/// <summary> 
/// 执行指定Sql语句,同时给传入DataTable进行赋值  
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
/// <param name="dt">ref DataTable dt </param> 
public static void dataTable(string sqlstr,ref DataTable dt) 
{ 
SqlDataAdapter da=new SqlDataAdapter(); 
try 
{ 
openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
da.SelectCommand =comm; 
da.Fill(dt); 
} 
catch(Exception e) 
{ 
throw new Exception(e.Message);  
} 
finally 
{ 
closeConnection(); 
} 
} 
/// <summary> 
/// 执行带参数存储过程并返回数据集合 
/// </summary> 
/// <param name="procName">存储过程名称</param> 
/// <param name="parameters">SqlParameterCollection 输入参数</param> 
/// <returns></returns> 
public static DataTable dataTable(string procName,SqlParameterCollection parameters) 
{  
SqlDataAdapter da=new SqlDataAdapter(); 
DataTable datatable=new DataTable(); 
try 
{ 
openConnection(); 
comm.Parameters.Clear(); 
comm.CommandType=CommandType.StoredProcedure ; 
comm.CommandText =procName; 
foreach(SqlParameter para in parameters) 
{ 
SqlParameter p=(SqlParameter)para; 
comm.Parameters.Add(p); 
} 
da.SelectCommand =comm; 
da.Fill(datatable); 
} 
catch(Exception e) 
{ 
throw new Exception(e.Message); 
} 
finally 
{ 
closeConnection(); 
} 
return datatable; 
} 
public static DataView dataView(string sqlstr) 
{ 
SqlDataAdapter da=new SqlDataAdapter(); 
DataView dv=new DataView(); 
DataSet ds=new DataSet(); 
try 
{ 
openConnection(); 
comm.CommandType=CommandType.Text; 
comm.CommandText =sqlstr; 
da.SelectCommand =comm; 
da.Fill(ds); 
dv=ds.Tables[0].DefaultView; 
} 
catch(Exception e) 
{ 
throw new Exception(e.Message); 
} 
finally 
{ 
closeConnection(); 
} 
return dv; 
} 
} 
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des ASP.NET-Datenzugriffsklassencodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Alternativen zu Null in der C -Sprache Was sind die Alternativen zu Null in der C -Sprache Mar 03, 2025 pm 05:37 PM

In diesem Artikel wird die Herausforderungen des Nullzeigers in C untersucht. Es argumentiert, dass das Problem nicht null selbst, sondern seinen Missbrauch ist. Der Artikel beschreibt Best Practices zur Verhinderung der Verhindern, einschließlich Vor-Dre-Dre-Dereferenz-Überprüfungen, Zeiger initiali

So fügen Sie C-Compiler der nächsten Ebene hinzu So fügen Sie C-Compiler der nächsten Ebene hinzu Mar 03, 2025 pm 05:44 PM

In diesem Artikel wird erläutert, wie Sie neue Zeilenzeichen in C mit der \ n Escape -Sequenz innerhalb von Printf erstellen und Funktionen setzt. Es beschreibt die Funktionalität und liefert Codebeispiele, die die Verwendung für Zeilenumbrüche in der Ausgabe demonstrieren.

Welcher C -Sprachkompiler ist besser? Welcher C -Sprachkompiler ist besser? Mar 03, 2025 pm 05:39 PM

Dieser Artikel führt Anfänger bei der Auswahl eines C -Compilers. Es wird argumentiert, dass GCC aufgrund seiner Benutzerfreundlichkeit, der breiten Verfügbarkeit und der umfangreichen Ressourcen für Anfänger am besten geeignet ist. Es wird jedoch auch GCC, Clang, MSVC und TCC vergleicht, wodurch ihre Unterschiede hervorgehoben werden

Ist Null in der modernen Programmierung in der C -Sprache noch wichtig? Ist Null in der modernen Programmierung in der C -Sprache noch wichtig? Mar 03, 2025 pm 05:35 PM

Dieser Artikel betont die anhaltende Bedeutung von NULL in der modernen C -Programmierung. Trotz Fortschritten bleibt NULL für die explizite Zeigerverwaltung von entscheidender Bedeutung und verhindert Segmentierungsfehler, indem das Fehlen einer gültigen Speicheradresse markiert wird. Bestes Prac

Was sind die Webversionen von C -Sprach Compilern? Was sind die Webversionen von C -Sprach Compilern? Mar 03, 2025 pm 05:42 PM

Dieser Artikel bewertet Online -C -Compiler für Anfänger, die sich auf die Benutzerfreundlichkeit und Debugging -Funktionen konzentrieren. OnlineGDB und Repl.it sind für ihre benutzerfreundlichen Schnittstellen und hilfreichen Debugging-Tools hervorgehoben. Andere Optionen wie Programmiz und Compil

C Sprache Online -Programmierwebsite C Sprachkompiler Offizielle Website Zusammenfassung C Sprache Online -Programmierwebsite C Sprachkompiler Offizielle Website Zusammenfassung Mar 03, 2025 pm 05:41 PM

Dieser Artikel vergleicht Online -C -Programmierplattformen und zeigt Unterschiede in Funktionen wie Debugging -Tools, IDE -Funktionalität, Standardkonformität und Speicher-/Ausführungsgrenzen. Es wird argumentiert, dass die "beste" Plattform von den Benutzerbedürfnissen abhängt.

Methode zum Kopieren von Code nach C -Sprachkompiler Methode zum Kopieren von Code nach C -Sprachkompiler Mar 03, 2025 pm 05:43 PM

In diesem Artikel werden effizientes Codekopieren in C -IDEs erläutert. Es wird betont, dass das Kopieren eine IDE -Funktion ist, keine Compiler -Funktion, und Details Strategien für eine verbesserte Effizienz, einschließlich der Verwendung von IDE -Auswahltools, Codefalten, Suchen/Ersetzen, Templa

So lösen Sie das Problem, das Ausgangsfenster durch den C -Sprachkompiler nicht zu verbessern So lösen Sie das Problem, das Ausgangsfenster durch den C -Sprachkompiler nicht zu verbessern Mar 03, 2025 pm 05:40 PM

In diesem Artikel wird die Ausgabefenster in der C -Programmkompilierung fehlt. Es werden Ursachen untersucht, wie das Ausführen der ausführbaren Datei, Programmfehler, falsche Compiler -Einstellungen, Hintergrundprozesse und schnelle Programmabschluss. Lösungen umfassen Ch

See all articles