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中配置好的连接语句需要用上了。
public static string connectionString = ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString;
公用方法就不赘述了,写一个简单的如何执行SQL语句的吧,把注释也给写上了。
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
最后返回的是int类型的数据,影响结果的记录数。PS:对此类代码进行编写的时候,都要带上两个命名空间:System.Data和System.Data.SqlClient,有些时候还要带上System.Text,加上了这些命名空间才能显示系统内部带上的方法。
2.第二步就可以在DAL中进行调用这些方法了。不过DAL中主要封装的是处理数据的SQL语句,例如:
/// <summary>
/// 更新一条数据
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool Update(MODEL.UserInfoModel model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update UserDetail set ");
strSql.Append("username=@username,");
strSql.Append("password=@password,");
strSql.Append("sex=@sex,");
strSql.Append("age=@age,");
strSql.Append("political=@political,");
strSql.Append("height=@height,");
strSql.Append("weight=@weight,");
strSql.Append("graduated=@graduated,");
strSql.Append("professional=@professional,");
strSql.Append("graduateddate=@graduateddate,");
strSql.Append("address=@address,");
strSql.Append("phone=@phone,");
strSql.Append("other=@other ");
strSql.Append("where userid=@userid");
SqlParameter[] parameters = {
new SqlParameter("@username",SqlDbType.VarChar,),
new SqlParameter("@password",SqlDbType.VarChar,),
new SqlParameter("@sex",SqlDbType.Int,),
new SqlParameter("@age",SqlDbType.Int,),
new SqlParameter("@political",SqlDbType.Int,),
new SqlParameter("@height",SqlDbType.Int,),
new SqlParameter("@weight",SqlDbType.Int,),
new SqlParameter("@graduated",SqlDbType.VarChar,),
new SqlParameter("@professional",SqlDbType.VarChar,),
new SqlParameter("@graduateddate",SqlDbType.DateTime),
new SqlParameter("@address",SqlDbType.VarChar,),
new SqlParameter("@phone",SqlDbType.VarChar,),
new SqlParameter("@other",SqlDbType.VarChar,),
new SqlParameter("@userid",SqlDbType.Int,)
};
parameters[].Value = model.UserName;
parameters[].Value = model.Password;
parameters[].Value = model.Sex;
parameters[].Value = model.Age;
parameters[].Value = model.Political;
parameters[].Value = model.Height;
parameters[].Value = model.Weight;
parameters[].Value = model.Graduated;
parameters[].Value = model.Professional;
parameters[].Value = model.GraduatedDate;
parameters[].Value = model.Address;
parameters[].Value = model.Phone;
parameters[].Value = model.Other;
parameters[].Value = model.UserId; int rows = SqlHelper.ExecuteSql(strSql.ToString(), parameters);
if (rows > )
return true;
else
return false; }
当然,其中我用model封装了UserDetail数据库里面的所有字段,通过这样一个方法,我就可以自如的在model中调用数据库里的字段了,毕竟model里面字段的值改变的话,数据库里的数据也响应改变。
C#学习日记之数据库连接的更多相关文章
- Linux学习日记-使用EF6 Code First(四)
一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是 请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...
- Java学习-006-三种数据库连接 MySQL、Oracle、sqlserver
此文主要讲述在初学 Java 时,常用的三种数据库 MySQL.Oracle.sqlserver 连接的源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源 ...
- android学习日记05--Activity间的跳转Intent实现
Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...
- android学习日记03--常用控件Dialog
常用控件 9.Dialog 我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框 对话框,要创建对话框之前首先要创建Bui ...
- android学习日记03--常用控件checkbox/radiobutton
常用控件3.checkbox 复选框,确定是否勾选,点击一下勾选,点击第二下取消,当有一系列备选项时适合用checkbox控件,方便用户提交数据. 贴上例子Activity的java代码 packag ...
- android学习日记03--常用控件button/imagebutton
常用控件 控件是对数据和方法的封装.控件可以有自己的属性和方法.属性是控件数据的简单访问者.方法则是控件的一些简单而可见的功能.所有控件都是继承View类 介绍android原生提供几种常用的控件bu ...
- Zend Framework学习日记(2)--HelloWorld篇(转)
Zend Framework学习日记(2)--HelloWorld篇 这一篇主要演示如何用zf命令行工具建立一个基于Zend Framework框架的工程,也是我初学Zend Framework的小练 ...
- Zend Framework学习日记(1)--环境搭建篇(转)
Zend Framework学习日记(1)--环境搭建篇 (1)开发工具 Zend Framework框架:http://framework.zend.com/download/latest 包含2个 ...
- Python 学习日记(第三周)
知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...
随机推荐
- MSSTDFMT.dll系统文件(附2种MSSTDFMT.dll 注册方法)-系统增强
MSSTDFMT.dll系统文件(附2种MSSTDFMT.dll 注册方法)-系统增强 msstdfmt.dll是微软标准数据格式对象相关动态链接库文件. msstdfmt.dll里面包含了定义好函数 ...
- makefile简单helloworld
最近要在unix系统上开发c++应用程序,但默认情况下unix编译c++程序需要使用makefile.其实makefile语法还是比较简单,看上去有点像ant.废话不说了,直接上helloworld. ...
- 注册UBER(优步)司机常见问题,如何注册uber(优步)司机
如何注册uber(优步)司机,怎么注册UBER(优步)司机 此链接为优步内部人员推荐,优先审核,基本当天就能收到短信,注意上传证件照清晰点. https://uber.avosapps.com/ref ...
- iso-开发基础知识-5-适配器
个人学习总结仅供参考:欢迎拍砖 1.适配器:用于连接两种不同种类的对象. 2.分为2种:类适配,对象适配. 3.委托(Delegate)模式属于对象适配器: 4.何时使用适配器模式 书中的这幅图更好的 ...
- jquery阻止默认滑动
$(".swiper-slide").click(function(){ var index = imgarr[$(this).index()]; var content = &q ...
- maven项目启动
1服务install 2 build (tomcat:run)
- [学习笔记]今天开始学HTML5!
1,href和src的区别:href有“连接,引用”之意,指两者的连接关系,如<a href=""></a>,<link href="**. ...
- JS 在html中的位置
前言 当我了解完html在浏览器中的解析渲染流程后,反而又发现了新的困扰自己的问题. Q:即然html要渲染需要渲染树,而渲染树又需要DOMTree和CSSRuleTree,DOMTree需要解析HT ...
- c#软件工程师笔试题
近来有打算重新找工作,还没提离职,投了几家公司简历,其中一家比较中意的公司给发了面试题,其实,好像是好几天前的事了,主要是Gmail邮箱很少用,所以一直都没去看,今天看到题目给解了. 题目如下: 题目 ...
- C#隐藏桌面图标和任务栏
最近因为项目需要需要实现桌面图标和任务状态栏的隐藏功能,实现的方式很多,比如修改注册表值,调用windows API函数等.经过一番的查阅,这个功能暂时实现了,或许不是很好的方法,但是我预期的效果达到 ...