惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Securelist
L
LangChain Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
月光博客
月光博客
S
Schneier on Security
Simon Willison's Weblog
Simon Willison's Weblog
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
美团技术团队
S
Security @ Cisco Blogs
人人都是产品经理
人人都是产品经理
L
LINUX DO - 热门话题
S
SegmentFault 最新的问题
D
DataBreaches.Net
C
CXSECURITY Database RSS Feed - CXSecurity.com
Microsoft Security Blog
Microsoft Security Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
N
News | PayPal Newsroom
W
WeLiveSecurity
F
Fortinet All Blogs
The Hacker News
The Hacker News
The Register - Security
The Register - Security
P
Palo Alto Networks Blog
Engineering at Meta
Engineering at Meta
T
The Exploit Database - CXSecurity.com
Vercel News
Vercel News
G
GRAHAM CLULEY
博客园 - 聂微东
P
Privacy International News Feed
P
Privacy & Cybersecurity Law Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
G
Google Developers Blog
T
Tailwind CSS Blog
V
Vulnerabilities – Threatpost
L
Lohrmann on Cybersecurity
T
Tenable Blog
Cisco Talos Blog
Cisco Talos Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
云风的 BLOG
云风的 BLOG
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
B
Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hugging Face - Blog
Hugging Face - Blog
T
Threatpost

博客园 - 牵牛望岳

ICloneable 接口--c# 深复制与浅复制 IDisposable接口详解 C# 中用 PadLeft、PadRight 补足位数 listbox控件的一些操作 IsPostBack用法,Page.IsValid的用法 IIf函数 替换、恢复Html中的特殊字符 C#关键字 【推荐】常用 SQL 语句大全 CSS中的黄金分割率 几条相关SQL语句 解析.net中ref和out的实质 JavaScript substr() 和 substring() 方法的区别 武林外传搞笑语录 调试和跟踪 VS2005单元测试[转] 几个.Net开源的CMS、Portal系统 DataKeyNames工作 查询后,翻页问题的解决办法2。(GridView1.PageIndex = e.NewPageIndex;) (转)
C#连接数据库的一些鲜为人知的方法
牵牛望岳 · 2009-02-12 · via 博客园 - 牵牛望岳

用过VS2005VS2008的开发人员肯定知道在安装这个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");

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

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

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

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