在實際開發中,我們不會直接使用拼寫SQL語句的方法進行數據庫操作,而是使用參數化的方法進行數據庫操作,這樣做的好處很多,不僅提高了程序的健壯性,同時也避免的SQL注入的問題。在這里,筆者為初學者提供一個SQLHelper模板,希望對新手有所啟發。
public static class SqlHelper { public static readonly string strConn = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString; public static int ExecuteNonQuery(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(strConn)) { conn.Open(); return ExecuteNonQuery(conn, cmdText, parameters); } } public static int ExecuteNonQuery(SqlConnection conn, string cmdText, params SqlParameter[] parameters) { using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = cmdText; cmd.Parameters.AddRange(parameters); return cmd.ExecuteNonQuery(); } } public static object ExecuteScalar(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(strConn)) { conn.Open(); return ExecuteScalar(conn, cmdText, parameters); } } public static object ExecuteScalar(SqlConnection conn, string cmdText, params SqlParameter[] parameters) { using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = cmdText; cmd.Parameters.AddRange(parameters); return cmd.ExecuteScalar(); } } public static DataTable ExecuteDataTable(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(strConn)) { conn.Open(); return ExecuteDataTable(conn, cmdText, parameters); } } public static DataTable ExecuteDataTable(SqlConnection conn, string cmdText, params SqlParameter[] parameters) { using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = cmdText; cmd.Parameters.AddRange(parameters); using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) { DataTable dt = new DataTable(); adapter.Fill(dt); return dt; } } } /// <summary> /// 存數據時防止為空 /// </summary> /// <param name="value"></param> /// <returns></returns> public static object ToDbValue(this object value) { return value == null ? DBNull.Value : value; } /// <summary> /// 取數據時防止為空 /// </summary> /// <param name="value"></param> /// <returns></returns> public static object FromDbValue(this object value) { return value == DBNull.Value ? null : value; } }
新聞熱點
疑難解答