집 >백엔드 개발 >C#.Net 튜토리얼 >C#에서 SqlHelper 클래스 작성 사용에 대한 자세한 설명
이 글에서는 주로 C#을 사용하여 SqlHelper 클래스를 작성하는 방법을 소개합니다. 편집자는 이것이 꽤 좋다고 생각하므로 지금 공유하고 참고용으로 제공하겠습니다. 에디터 따라가서 살펴볼까요
공부도 코딩도 할 수 없는 지루한 주말입니다. 뭔가 할 일을 찾고 싶었지만 무엇을 해야 할지 몰랐습니다. 갑자기 배운 SqlHelper를 거의 잊어버렸다는 것을 깨달았습니다. 그러다가 호랑이의 몸이 떨렸고 어떻게 자신이 이렇게 낮게 가라앉을 수 있는지 생각했습니다. 그는 즉시 컴퓨터를 켜고 양손으로 키보드를 만졌습니다. 이 글은 학습 과정 중 리뷰와 지식을 공유하기 위해 작성했습니다(시간 죽이기-^.^-).
본문을 시작하겠습니다
여기서는 콘솔 프로그램을 예로 들어보겠습니다. 먼저 연결 문자열을 구성해야 합니다. app.config 파일에
<connectionStrings> <add name="Sql" connectionString="server=数据库地址;uid=用户名;pwd=密码;database=数据库名"/> </connectionStrings>
1 노드를 추가해야 합니다. 그런 다음 SqlHepler라는 클래스를 만든 다음, app.config 파일에 구성된 연결 문자열입니다.
public static string GetSqlConnectionString() { return ConfigurationManager. ConnectionStrings["Sql"].ConnectionString; }
2. 첫 번째 SqlHepler 메서드를 캡슐화하고 실행된 SQL을 캡슐화한 후 영향을 받은 행 수를 반환해 보겠습니다.
public static int ExecuteNonQuery(string sqlText,params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(GetSqlConnectionString())) { using (SqlCommand cmd=conn.CreateCommand()) { conn.Open(); //打开数据库 cmd.CommandText = sqlText; //对CommandText进行赋值 cmd.Parameters.AddRange(parameters); //对数据库使用参数进行赋值 return cmd.ExecuteNonQuery(); } } }
매개변수 설명: sqlText: 실행해야 하는 sql 스크립트, 매개변수: 필수 매개변수 세트
이 메서드는 주로 삭제, 업데이트 및 삽입 작업을 수행하고 영향을 받은 행 수를 반환하는 데 사용됩니다.
3. 계속해서 쿼리 작업을 캡슐화하고 쿼리 결과의 첫 번째 행과 첫 번째 열의 값을 반환합니다
public static object ExecuteScalar(string sqlText, params SqlParameter[] parameters) { using (SqlConnection conn=new SqlConnection(GetSqlConnectionString())) { using (SqlCommand cmd=conn.CreateCommand()) { conn.Open(); cmd.CommandText = sqlText; cmd.Parameters.AddRange(parameters); return cmd.ExecuteScalar(); } } }
매개변수 설명: 위와 같습니다.
이 메서드의 반환 값은 객체이므로 쿼리하는 데이터 유형이 무엇인지 모를 때 이 클래스를 사용할 수 있습니다.
4. 일반적으로 사용되는 쿼리 메서드를 캡슐화하고 DataTable
public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] parameters) { using (SqlDataAdapter adapter =new SqlDataAdapter(sqlText,GetSqlConnectionString())) { DataTable dt = new DataTable(); adapter.SelectCommand.Parameters.AddRange(parameters); adapter.Fill(dt); return dt; } }
매개변수 설명을 반환합니다.
이 방법은 주로 일부 쿼리 데이터에 사용됩니다. dt는 쿼리된 데이터로 채워지고 데이터가 반환됩니다.
5. 마지막으로 SqlDataReader 유형
public static SqlDataReader ExecuteReader(string sqlText, params SqlParameter[] parameters) { //SqlDataReader要求,它读取数据的时候有,它独占它的SqlConnection对象,而且SqlConnection必须是Open状态 SqlConnection conn = new SqlConnection(GetSqlConnectionString());//不要释放连接,因为后面还需要连接打开状态 SqlCommand cmd = conn.CreateCommand(); conn.Open(); cmd.CommandText = sqlText; cmd.Parameters.AddRange(parameters); //CommandBehavior.CloseConnection当SqlDataReader释放的时候,顺便把SqlConnection对象也释放掉 return cmd.ExecuteReader(CommandBehavior.CloseConnection); }
을 반환하는 쿼리 메서드를 작성하고 캡슐화합니다. 매개변수 설명: 여전히 위와 같습니다.
이 메서드에서 반환된 SqlDataReader 형식 개체는 항상 SqlConnection 개체를 사용해야 하므로 해제할 수 없습니다. 이 유형의 데이터는 한 줄씩 읽혀집니다. 읽기는 이 클래스의 Read() 메서드를 사용하여 데이터가 비어 있는지(즉, 마지막 행을 읽었는지 여부)를 결정하는 bool입니다.
초보자로서 이번에는 간단하게 소개하고 SqlHepler 클래스를 리뷰해봤습니다.
첨부된 모든 코드는 다음과 같습니다:
using System.Configuration; using System.Data; using System.Data.SqlClient; namespace UserInfoMgr { class SqlHelper { /// <summary> /// 获取连接字符串 /// </summary> /// <returns>连接字符串</returns> public static string GetSqlConnectionString() { return ConfigurationManager.ConnectionStrings["Sql"].ConnectionString; } /// <summary> /// 封装一个执行的sql 返回受影响的行数 /// </summary> /// <param name="sqlText">执行的sql脚本</param> /// <param name="parameters">参数集合</param> /// <returns>受影响的行数</returns> public static int ExecuteNonQuery(string sqlText,params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(GetSqlConnectionString())) { using (SqlCommand cmd=conn.CreateCommand()) { conn.Open(); cmd.CommandText = sqlText; cmd.Parameters.AddRange(parameters); return cmd.ExecuteNonQuery(); } } } /// <summary> /// 执行sql,返回查询结果中的第一行第一列的值 /// </summary> /// <param name="sqlText">执行的sql脚本</param> /// <param name="parameters">参数集合</param> /// <returns>查询结果中的第一行第一列的值</returns> public static object ExecuteScalar(string sqlText, params SqlParameter[] parameters) { using (SqlConnection conn=new SqlConnection(GetSqlConnectionString())) { using (SqlCommand cmd=conn.CreateCommand()) { conn.Open(); cmd.CommandText = sqlText; cmd.Parameters.AddRange(parameters); return cmd.ExecuteScalar(); } } } /// <summary> /// 执行sql 返回一个DataTable /// </summary> /// <param name="sqlText">执行的sql脚本</param> /// <param name="parameters">参数集合</param> /// <returns>返回一个DataTable</returns> public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] parameters) { using (SqlDataAdapter adapter =new SqlDataAdapter(sqlText,GetSqlConnectionString())) { DataTable dt = new DataTable(); adapter.SelectCommand.Parameters.AddRange(parameters); adapter.Fill(dt); return dt; } } /// <summary> /// 执行sql脚本 /// </summary> /// <param name="sqlText">执行的sql脚本</param> /// <param name="parameters">参数集合</param> /// <returns>返回一个SqlDataReader</returns> public static SqlDataReader ExecuteReader(string sqlText, params SqlParameter[] parameters) { //SqlDataReader要求,它读取数据的时候有,它独占它的SqlConnection对象,而且SqlConnection必须是Open状态 SqlConnection conn = new SqlConnection(GetSqlConnectionString());//不要释放连接,因为后面还需要连接打开状态 SqlCommand cmd = conn.CreateCommand(); conn.Open(); cmd.CommandText = sqlText; cmd.Parameters.AddRange(parameters); //CommandBehavior.CloseConnection当SqlDataReader释放的时候,顺便把SqlConnection对象也释放掉 return cmd.ExecuteReader(CommandBehavior.CloseConnection); } } }
위 내용은 C#에서 SqlHelper 클래스 작성 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!