實現思路
-
先將SQL業務邏輯在SQL中編輯好
-
在CMD中設置CMD的格式類型爲存儲過程類型
-
SQL語句使用存儲過程名稱,參數和存儲過程中參數一致
CREATE PROC AdminLog @Id INT, @Pwd VARCHAR(20) AS SELECT * FROM Admins WHERE LoginId=@Id AND LoginPwd=@Pwd EXEC AdminLog 1000,'123456'
/// <summary> /// 查詢結果用DataReader讀取 /// </summary> /// <param name="procName">存儲過程的名稱</param> /// <param name="parameters">SQL語句中的所有參數</param> /// <returns></returns> public static SqlDataReader GetReaderByPROC(string procName, SqlParameter[] parameters) { SqlConnection con = new SqlConnection(constr); SqlCommand cmd = new SqlCommand(); cmd.Connection = con; //調用存儲過程 cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = procName; if (parameters != null) { cmd.Parameters.AddRange(parameters);//將SQL語句中的所有參數對象接收 } try { con.Open(); //不需要手動關閉con,當DataReader關閉時,con自動跟着關閉 return cmd.ExecuteReader(CommandBehavior.CloseConnection); } catch (Exception ex) { con.Close(); //記入系統日誌 throw ex; } }
public Admins GetAdmins(Admins adm) { string procName = "AdminLog"; SqlParameter[] parameters = { new SqlParameter("@id", System.Data.SqlDbType.Int), new SqlParameter("@Pwd", System.Data.SqlDbType.VarChar,50) }; parameters[0].Value = adm.LoginId; parameters[1].Value = adm.LoginPwd; SqlDataReader reader = DBHelper.SQLHelper.GetReaderByPROC(procName,parameters); Admins use = null; while (reader.Read()) { use = new Admins() { AdminName = reader["AdminName"].ToString(), LoginId = Convert.ToInt32(reader["LoginId"]), LoginPwd = reader["LoginPwd"].ToString() }; } reader.Close(); return use; }