用过VS2008和VS2010的开发人员肯定知道在安装这个IDE的时候会自动安装了一个精简版的SQL数据库服务SqlExpress,这个数据库系统少了最重要的企业管理器,也就是说不能用它来建数据表和一些可视化操作。如果碰到项目中要用到SQL数据库的时候也不能附加到数据库服务里面去,导致项目在连接数据库的时候会提示找不到数据库文件而读取失败。那么,这个精简版的SQL数据库服务是不是意味着一无是处呢?

其实未必,只要我们在连接数据库的时候利用好它就可以了~~

在这里我介绍两种C#中连接数据库的方法。一种需要附加数据库,一种则不要,只需要安装这个精简版的SQL就可以了…

方法一:

连接代码:

string strconn;

strconn = "Data Source=(local);";

strconn += "Initial Catalog=student;";

strconn += "User ID=sa;";

strconn += "Password=;";

SqlConnection con = new SqlConnection(strconn); //通过用户名和密码连接数据库

//SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=library;Integrated Security=True");    //通过系统用户验证连接数据库

con.Open();

SqlDataAdapter thisadapter = new SqlDataAdapter("select * from reader where 条形码='" + txm + "'", con);

SqlCommandBuilder thisbuilder = new SqlCommandBuilder(thisadapter);

DataSet thisdataset = new DataSet();

thisadapter.Fill(thisdataset, "reader");

…… //接下去就是对数据的操作了

这种方法必须要附加数据库文件才可以访问…

优点是可以通过企业管理器直接对数据库进行可视化操作,比如对记录进行全权修改…万一碰到数据有错误,在系统里面不好修改的时候可以进行强制维护。同时,如果后期更新系统,增加新的数据库需求,比如增加字段就可以在里面操作。

当然这也算是缺点,乱改数据可能导致破坏数据库的一些规则和数据一致性,严重的话会导致灾难性的数据崩溃。

方法二:

连接代码:

SqlConnectionStringBuilder connectstringbuilder = new SqlConnectionStringBuilder();

connectstringbuilder.DataSource = @"(local)/sqlexpress";   //指定数据库服务

connectstringbuilder.AttachDBFilename = @"|DataDirectory|/data/library.mdf"; //数据库文件,采用相对地址的方式来指定。注意格式

connectstringbuilder.IntegratedSecurity = true;

connectstringbuilder.UserInstance = true;

SqlConnection thisconnection = new SqlConnection(connectstringbuilder.ConnectionString);

SqlDataAdapter thisadapter = new SqlDataAdapter("select * from reader where 条形码='" + txm + "'", thisconnection);

DataSet dt = new DataSet();

thisadapter.Fill(dt, "info");

……  //接下去就是对数据的操作了

这个方法最大的有点就是允许我们不用安装600M(MSSQL2000)或者1G(MSSQL2005)的数据库系统,只需要安装SQL精简版的数据库服务(22M左右)就可以了。而且不用去附加数据库…

但是这种优点也带来致命的缺点,就是第一次连接数据库的时候会有点慢,这不要紧,但它会重新格式数据库文件的一些结构,导致一些数据格式发生变化,因此连接之后这样的数据库文件是不能再次被附加到数据库系统中的(会报错)。也就是说后期如果要修改数据库,比如增加字段和表等是不太可能实现的。

不过这也在一定的程度上带来了安全性。

以上这两种数据库连接方式各有千秋,是否要使用就看你的系统实际应用需求了…

(注:这两种方法在VS2008+MSSQL调试通过…)

C#连接数据库的一些鲜为人知的方法的更多相关文章

  1. Navicat for mysql远程连接数据库详(1130错误解决方法)

    用Navicat for mysql连接数据库测试下连接 如果出现1130错误错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to ...

  2. 使用Jmeter连接数据库检查数据库记录的方法

    一.首先下载Jdbc驱动(jdbc驱动分两种,classes与ojdbc文件,该用哪个需要检查电脑安装的jdk版本(查看方法cmd命令java –version) 关于各种版本的说明:http://e ...

  3. java连接数据库增删改查公共方法

    package dao; import java.io.IOException; import java.sql.CallableStatement; import java.sql.Connecti ...

  4. PDO控制、连接数据库

    PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口.PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数,基于数据库使用的安全性,因为后者欠缺对于SQL ...

  5. loadrunner参数化使用mysql数据源失败解决方法

    操作系统:win7 在64位的操作系统上,如果你想要连接32位mysql,避免安装mysql connector/odbc 64位,否则即使配置ODBC数据源连接正常,但loadrunner无法正常调 ...

  6. 【MySQL】常用监控指标及监控方法

    对之前生产中使用过的MySQL数据库监控指标做个小结.  指标分类 指标名称 指标说明 性能类指标 QPS 数据库每秒处理的请求数量 TPS 数据库每秒处理的事务数量 并发数 数据库实例当前并行处理的 ...

  7. Java如何连接SQLServer,并实现查询、修改、删除方法

    场景:A:在UI自动化时,删除数据时候,在界面UI提示“该XX已被使用,无法删除”. 这时候我们有需要做数据初始化的操作,需要把历史数据做删除,来确脚本运行的重复执行,和稳定性质. B: 在做新增操作 ...

  8. LoadRunner 参数化之 连接数据库进行参数化

    LoadRunner 参数化之 连接数据库进行参数化 Loadrunner(简称“LR”)对性能测试的脚本进行参数化时,由于数据量偏大,大家往往都会把数据录入到数据库表里,然后关联到LR,本文将详细介 ...

  9. 封装MySQL的单例,连接数据库并对数据进行增删改查操作

    单例: 一个类只能有一个对象 应用场景:多次请求数据库只需要一个连接对象. 实现:三私一公 1.私有的静态属性用来保存对象的单例2.私有的构造方法用来阻止在类的外部实例化3.私有的__clone阻止在 ...

随机推荐

  1. JQ异步调用

    AjaxGet请求方式: <script type="text/javascript"> $.ajax({ type: "GET", dataTyp ...

  2. ASP.NET网络编程之-HTTP协议

    HTTP协议由来已久,最近复习到它,好记性不如烂笔头,在此留下自己的总结,算是为后面再要看时用吧.HTTP协议是一个在B/S架构中约束客户端(浏览器)和服务端(比较常见的是就是IIS服务器,关于IIS ...

  3. DOS命令教学之详解批处理

    批处理文件是由一个或一个以上的DOS命令及可执行命令组成的带有扩展名.BAT的文件.当用户以批处理文件名为命令时,DOS会自动依次执行文件中的命令.批处理文件的特点是一次建立可多次执行.下面,寻修网h ...

  4. Java教程——CMD手动编译运行失败原因(高手略过)

    (仅对新手,高手略过)在学习Java初期,我们在利用cmd手动编译java程序的时候,会遇到编译成功,但运行却总是提示失败.已经排除了java配置环境的问题,Path和ClassPath以及%JAVA ...

  5. django 学习点滴

    django连接数据库要安装第三方包,比如mysql的就是 python-mysqldb, 用apt-cache search python-mysql 搜索一下. django的project可以放 ...

  6. js之封装sort实现json格式数据的排序

    eg  : data:{[ {"name":"paul","ege":12}, {"name":"paul&q ...

  7. 使用localstorage及js模版引擎 开发 m站设想

    目前 m站开发的方式,依然请求完整的html,这样造成的问题就是每次请求的数据量过大过多,在没有wifi的情况下,导致页面打开的速度很慢,耗费的流量也较多:访问m站的多是移动端设备,其浏览器的版本都较 ...

  8. centos 交换分区

    内容来自:http://www.huzs.net/?p=1683 一般在桌面型的用不到,因为现在内存都比较大,服务器就不一样了,但是建议无论是在桌面还是服务器上,都设置 swap 以下操作都是在 ro ...

  9. 高效的VS调试技巧

    本文总结了十个调试技巧,当你使用VS的时候可以节省你很多时间. 1.悬停鼠标查看表达式 调试有时候很有挑战性,当你步入一个函数想看看哪块出错的时候,查看调用栈来想想值是从哪来的.另一些情况下,则需要添 ...

  10. cli下的php(并传递参数)

    传递参数有两种方式: 第一种使用文件操作,STDOUT作为标准输出,STDIN作为标准输入 使用fwrite($file,$string)作输出,使用fgets($file)作输入.这种应该算是继承自 ...