C#学习日记之数据库连接

一、webconfig设置和参数解释

在C#中新建一个网站时,webconfig文件中会有一个默认的数据库连接语句,如下

<connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;
Initial Catalog=aspnet-easyui-test-20141212151928;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-easyui-test-20141212151928.mdf" /> </connectionStrings>

 简单记录一下其标签的意思。

        (1)name:数据库连接语句。在C#页面代码中使用时,可以知道其相关属性。

        (2)providerName:没什么好说的,SQL数据库一般都是System.Data.SqlClient,如果使用的是Oracle数据库,应该是System.Data.OracleClient。

        (3)connectionString:照着默认的写就可以了,没什么说法。

        (4)Initial Catalog:你的数据库名字

        (5)Integrated Security:有True|False|SSPI。True代表集成登陆数据库,将使用当前的Windows帐户凭据进行身份验证。SSPI的作用与True的作用一样的。False则要求你填入数据库登陆的uid和pwd。也就是账户和密码,一般数据库账户名都是sa,密码是在数据库创建时候填写的。

        (6)User ID:=uid,大小写不区分。在Integrated Security为False的情况下才需要填写,代表数据库的登陆账户,一般都是sa。

        (7)Password:=pwd,大小写不区分。数据库的登陆密码。

        (8)AttachDBFilename:可以写成“extended properties”,“initial file name”,指定连接打开的时候动态附加到服务器上的数据库文件的位置,可以不填写。这个属性可以接受数据库的完整路径和相对路径(例如使用|DataDirectory|语法),在运行时这个路径会被应用程序的 App_Data 目录所代替。

下面是我自己写的一个:

  <connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;
Initial Catalog=aspnet-easyui-test-20141212151928;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-easyui-test-20141212151928.mdf" /> <add name="TestConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;
Initial Catalog=TestUser;Integrated Security=false;User ID=sa;Password=123456"/> </connectionStrings>

 二、C#后台连接

         1.写一个抽象类sqlHelper来进行数据库处理以及存储过程的处理,然后在DAL中用stringbuilder来组装数据库操作语句。首先需要配置数据库,也就是刚刚在webconfig中配置好的连接语句需要用上了。

1 public static string connectionString = ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString;

        公用方法就不赘述了,写一个简单的如何执行SQL语句的吧,把注释也给写上了。

 1         /// <summary>
 2         /// 执行SQL语句,返回影响的记录数
 3         /// </summary>
 4         /// <param name="SQLString">SQL语句</param>
 5         /// <returns>影响的记录数</returns>
 6         public static int ExecuteSql(string SQLString)
 7         {
 8             using (SqlConnection connection = new SqlConnection(connectionString))
 9             {
10                 using (SqlCommand cmd = new SqlCommand(SQLString, connection))
11                 {
12                     try
13                     {
14                         connection.Open();
15                         int rows = cmd.ExecuteNonQuery();
16                         return rows;
17                     }
18                     catch (System.Data.SqlClient.SqlException e)
19                     {
20                         connection.Close();
21                         throw e;
22                     }
23                 }
24             }
25         }

        最后返回的是int类型的数据,影响结果的记录数。PS:对此类代码进行编写的时候,都要带上两个命名空间:System.Data和System.Data.SqlClient,有些时候还要带上System.Text,加上了这些命名空间才能显示系统内部带上的方法。

        2.第二步就可以在DAL中进行调用这些方法了。不过DAL中主要封装的是处理数据的SQL语句,例如:

 1  /// <summary>
 2         /// 更新一条数据
 3         /// </summary>
 4         /// <param name="model"></param>
 5         /// <returns></returns>
 6         public bool Update(MODEL.UserInfoModel model)
 7         {
 8             StringBuilder strSql = new StringBuilder();
 9             strSql.Append("update UserDetail set ");
10             strSql.Append("username=@username,");
11             strSql.Append("password=@password,");
12             strSql.Append("sex=@sex,");
13             strSql.Append("age=@age,");
14             strSql.Append("political=@political,");
15             strSql.Append("height=@height,");
16             strSql.Append("weight=@weight,");
17             strSql.Append("graduated=@graduated,");
18             strSql.Append("professional=@professional,");
19             strSql.Append("graduateddate=@graduateddate,");
20             strSql.Append("address=@address,");
21             strSql.Append("phone=@phone,");
22             strSql.Append("other=@other ");
23             strSql.Append("where userid=@userid");
24             SqlParameter[] parameters = {
25                     new SqlParameter("@username",SqlDbType.VarChar,20),
26                     new SqlParameter("@password",SqlDbType.VarChar,20),
27                     new SqlParameter("@sex",SqlDbType.Int,4),
28                     new SqlParameter("@age",SqlDbType.Int,4),
29                     new SqlParameter("@political",SqlDbType.Int,4),
30                     new SqlParameter("@height",SqlDbType.Int,4),
31                     new SqlParameter("@weight",SqlDbType.Int,4),
32                     new SqlParameter("@graduated",SqlDbType.VarChar,50),
33                     new SqlParameter("@professional",SqlDbType.VarChar,50),
34                     new SqlParameter("@graduateddate",SqlDbType.DateTime),
35                     new SqlParameter("@address",SqlDbType.VarChar,200),
36                     new SqlParameter("@phone",SqlDbType.VarChar,200),
37                     new SqlParameter("@other",SqlDbType.VarChar,200),
38                     new SqlParameter("@userid",SqlDbType.Int,4)
39                                         };
40             parameters[0].Value = model.UserName;
41             parameters[1].Value = model.Password;
42             parameters[2].Value = model.Sex;
43             parameters[3].Value = model.Age;
44             parameters[4].Value = model.Political;
45             parameters[5].Value = model.Height;
46             parameters[6].Value = model.Weight;
47             parameters[7].Value = model.Graduated;
48             parameters[8].Value = model.Professional;
49             parameters[9].Value = model.GraduatedDate;
50             parameters[10].Value = model.Address;
51             parameters[11].Value = model.Phone;
52             parameters[12].Value = model.Other;
53             parameters[13].Value = model.UserId;
54 
55             int rows = SqlHelper.ExecuteSql(strSql.ToString(), parameters);
56             if (rows > 0)
57                 return true;
58             else
59                 return false;
60 
61         }

        当然,其中我用model封装了UserDetail数据库里面的所有字段,通过这样一个方法,我就可以自如的在model中调用数据库里的字段了,毕竟model里面字段的值改变的话,数据库里的数据也响应改变。

posted @ 2014-12-24 14:59  慕妍桃夭  阅读(319)  评论(0编辑  收藏  举报