Asp.net mvc+三层架构(注册篇)

                                               Asp.net mvc+三层架构(注册篇)

坑:从数据库加载出的数据需加.Trim()去掉空格符,否则匹配不成功

先搞个简单的SQL数据库名为MVC, 新建表UserInfo

Id主键,int型,自增1;

UserName,char型;

PassWord,char型;

注意:表的名称不要取user,因为与vs关键字有冲突,会报错(尴尬地笑了一下)

 

项目结构:

 

1.新建一个名为MVCRegister的应用程序,并选择mvc框架

 

2.分别建立DAL,BLL,Models类库,再在DAL类库下新建sql帮助类SqlHelper.cs

再在MVCRegister的目录下的右键添加引用,在“程序集”勾选System.Cofiguration 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading.Tasks;
  6 using System.Data.SqlClient;
  7 using System.Configuration;
  8 using System.Data;
  9 using System.Collections;
 10 
 11 namespace DAL
 12 {
 13 
 14     public class SqlHelper
 15     {
 16 
 17         public static string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();
 18         public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
 19         {
 20             SqlCommand cmd = new SqlCommand();
 21             using (SqlConnection conn = new SqlConnection(connectionString))
 22             {
 23                 PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
 24                 int val = cmd.ExecuteNonQuery();
 25                 return val;
 26             }
 27         }
 28         public static SqlDataReader GetReader(string sql)
 29         {
 30             SqlConnection conn = new SqlConnection(connString);
 31             SqlCommand cmd = new SqlCommand(sql, conn);
 32             try
 33             {
 34                 conn.Open();
 35                 return cmd.ExecuteReader(CommandBehavior.CloseConnection);
 36 
 37             }
 38             catch (Exception ex)
 39             {
 40                 throw ex;
 41             }
 42         }
 43 
 44 
 45         public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues)
 46         {
 47 
 48             using (SqlConnection conn = new SqlConnection(connectionString))
 49             {
 50                 SqlCommand cmd = new SqlCommand();
 51 
 52                 PrepareCommand(cmd, conn, spName, parameterValues);
 53                 int val = cmd.ExecuteNonQuery();
 54 
 55                 return val;
 56             }
 57         }
 58 
 59         public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
 60         {
 61 
 62             SqlConnection conn = new SqlConnection(connectionString);
 63             try
 64             {
 65                 SqlCommand cmd = new SqlCommand();
 66                 PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
 67                 SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
 68 
 69                 return rdr;
 70             }
 71             catch
 72             {
 73                 conn.Close();
 74                 throw;
 75             }
 76         }
 77 
 78         public static SqlDataReader ExecuteReader(CommandType text, string connectionString, string spName, params object[] parameterValues)
 79         {
 80             SqlConnection conn = new SqlConnection(connectionString);
 81             try
 82             {
 83                 SqlCommand cmd = new SqlCommand();
 84 
 85                 PrepareCommand(cmd, conn, spName, parameterValues);
 86                 SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
 87 
 88                 return rdr;
 89             }
 90             catch
 91             {
 92                 conn.Close();
 93                 throw;
 94             }
 95 
 96         }
 97 
 98 
 99         public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues)
100         {
101             using (SqlConnection conn = new SqlConnection(connectionString))
102             {
103                 SqlCommand cmd = new SqlCommand();
104 
105                 PrepareCommand(cmd, conn, spName, parameterValues);
106 
107                 using (SqlDataAdapter da = new SqlDataAdapter(cmd))
108                 {
109                     DataSet ds = new DataSet();
110 
111                     da.Fill(ds);
112 
113                     return ds;
114                 }
115             }
116         }
117 
118 
119         public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
120         {
121             using (SqlConnection conn = new SqlConnection(connectionString))
122             {
123 
124                 SqlCommand cmd = new SqlCommand();
125 
126                 PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
127                 using (SqlDataAdapter da = new SqlDataAdapter(cmd))
128                 {
129                     DataSet ds = new DataSet();
130 
131                     da.Fill(ds);
132 
133                     return ds;
134                 }
135             }
136         }
137 
138 
139         public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
140         {
141             SqlCommand cmd = new SqlCommand();
142 
143             using (SqlConnection conn = new SqlConnection(connectionString))
144             {
145                 PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
146                 object val = cmd.ExecuteScalar();
147 
148                 return val;
149             }
150         }
151 
152         public static object ExecuteScalar(string connectionString, string spName, params object[] parameterValues)
153         {
154             SqlCommand cmd = new SqlCommand();
155 
156             using (SqlConnection conn = new SqlConnection(connectionString))
157             {
158                 PrepareCommand(cmd, conn, spName, parameterValues);
159                 object val = cmd.ExecuteScalar();
160 
161                 return val;
162             }
163         }
164 
165         private static void PrepareCommand(SqlCommand cmd, CommandType commandType, SqlConnection conn, string commandText, SqlParameter[] cmdParms)
166         {
167             //打开连接
168             if (conn.State != ConnectionState.Open)
169                 conn.Open();
170 
171             //设置SqlCommand对象
172             cmd.Connection = conn;
173             cmd.CommandText = commandText;
174             cmd.CommandType = commandType;
175 
176             if (cmdParms != null)
177             {
178                 foreach (SqlParameter parm in cmdParms)
179                     cmd.Parameters.Add(parm);
180             }
181         }
182 
183         private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, string spName, params object[] parameterValues)
184         {
185             //打开连接
186             if (conn.State != ConnectionState.Open)
187                 conn.Open();
188 
189             //设置SqlCommand对象
190             cmd.Connection = conn;
191             cmd.CommandText = spName;
192             cmd.CommandType = CommandType.StoredProcedure;
193 
194             //获取存储过程的参数
195             SqlCommandBuilder.DeriveParameters(cmd);
196 
197             //移除Return_Value 参数
198             cmd.Parameters.RemoveAt(0);
199 
200             //设置参数值
201             if (parameterValues != null)
202             {
203                 for (int i = 0; i < cmd.Parameters.Count; i++)
204                 {
205                     cmd.Parameters[i].Value = parameterValues[i];
206 
207                 }
208             }
209         }
210     }
211 }
SqlHelper

 

3.在DAL中新建UserDAL.cs

 1 using Models;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Data;
 5 using System.Data.SqlClient;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading.Tasks;
 9 
10 namespace DAL
11 {
12    public  class UserDAL
13     {
14        
15         public int RegisterUserDAL(UserModels zhuce)
16         {
17             string sql1 = "insert into UserInfo (UserName,PassWord) values  ('{0}','{1}')";
18             sql1 = string.Format(sql1, zhuce.UserName, zhuce.PassWord);           
19             try
20             {
21                 SqlDataReader a = SqlHelper.GetReader(sql1);
22                 return 1;
23             }
24             catch
25             {
26                 return 0;
27             }
28         }
29 
30 
31     }
32 }
UserDAL.cs

 

在BLL中新建UserBLL

 1 using DAL;
 2 using Models;
 3 using System;
 4 using System.Collections.Generic;
 5 using System.Linq;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8 
 9 namespace BLL
10 {
11     public class UserBLL
12     {
13         public int RegiterUserBLL(UserModels RegiterUser)//用户注册
14         {
15             int judge = new UserDAL().RegisterUserDAL(RegiterUser);
16             return judge;
17         }
18     }
19 }
UserBLL.cs

 

在Models中新建UserModels.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel.DataAnnotations;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 
 8 namespace Models
 9 {
10    public class UserModels
11     {
12         public int Id { get; set; }       
13         public string UserName { get; set; }
14         public string PassWord{ get; set; }
15 
16     }
17 }
UserModels.cs

 

4.添加Home控制器,Index是显示注册的界面,RegisterUser是实现注册的方法

 1 using BLL;
 2 using DAL;
 3 using Models;
 4 using System;
 5 using System.Collections.Generic;
 6 using System.Linq;
 7 using System.Web;
 8 using System.Web.Mvc;
 9 
10 namespace Pages.Controllers
11 {
12     public class HomeController : Controller
13     {
14         public ActionResult Index()
15         {
16             return View();
17         }
18         [HttpPost]
19         public ActionResult RegisterUser(UserModels Register)
20         {
21 
22              Register = new UserModels()
23             {
24                 UserName = Request.Params["UserName"],
25                 PassWord = Request.Params["PassWord"],             
26             };
27             UserBLL ret = new UserBLL();
28             if (ret.RegiterUserBLL(Register) == 1)//判断是否插入成功
29             {
30                 return Content("<script>alert('注册成功');window.location.href='../Home/Index';</script>");
31             }
32             else
33             {
34                 Response.Write("<script>alert('注册失败!')</script>");
35                 return View();
36             }
37             
38         }
39        
40 
41         }
42 }
Home

 

5.在Views文件夹下建Home文件夹,再建Index视图

 1 @{
 2     Layout = null;
 3 }
 4 
 5 <!DOCTYPE html>
 6 
 7 <html>
 8 <head>
 9     <meta name="viewport" content="width=device-width" />
10     <title>Index</title>
11 
12 
13 </head>
14 
15 <body>
16     <div>
17         <%=Html.ValidationMessage("action") %>
18        <form method="post" action="/Home/RegisterUser">
19           
20                 <p>用户名: <input name="UserName" type="text" /></p>
21                 <p>密&nbsp;码: <input name="PassWord" type="text" /></p>
22                 <input type="submit" value="提交注册" />
23             
24 
25         </form>
26         
27     </div>
28 
29 
30 </body>
31 </html>
Index

 

6.连接数据库。打开项目的Web.Config,在<configuration></configuration>标签内,添加下面 语句 

<connectionStrings>
<add name="connString" connectionString="Data Source=.;Initial Catalog=Pages;User ID=sa;Password=123"
providerName="System.Data.SqlClient" />
</connectionStrings>

 

7.运行截图

 

 

 

 

 

 

 




















</body></html>

 

posted @ 2018-11-18 12:39  风葬秋暝  阅读(2864)  评论(1编辑  收藏  举报