ADO.Net连接SQL Azure数据库详解
时间:2011-05-23 来源:陈学阳
在.Net环境下,连接数据库最常用的方法是使用ADO.Net。在SQL Azure环境下,ADO.Net
可以继续使用,这样对于.Net环境下的开发者来说,不用学习新的知识与技能就可以很容易
的连接到SQL Azure数据库上,这也符合微软所一直在宣传的云计算战略,减少了单独学习云
应用开发的成本。
要使用ADO.Net连接SQL Azure,有两种方法,一种是通过SQL Azure的门户管理页面提供
的连接字符串来连接;另一种方法是在程序里硬写,下面我们来介绍第二种方法。
使用程序连接到SQL Azure,需要使用
1 System.Data.SqlClient.SqlConnectionStringBuilder类,实例代码如下:
2 private string GetDbConnection()
3 {
4 SqlConnectionStringBuilder connBuilder =
5 new SqlConnectionStringBuilder();
6 string server = "unjikh4kim.database.windows.net";
7 connBuilder.DataSource = server;
8 connBuilder.InitialCatalog = "TestDB";
9 connBuilder.Encrypt = true;
10 connBuilder.TrustServerCertificate = true;
11 connBuilder.UserID = "sqladmin";
12 connBuilder.Password = "pass@word";
13 return connBuilder.ToString();
14 }
15 使用连接字符串,执行SQL语句
16 private void ExcuteSQL()
17 {
18 using (SqlConnection conn = new SqlConnection(GetDbConnection()))
19 {
20 using (SqlCommand command = conn.CreateCommand())
21 {
22 conn.Open();
23 // 创建表
24 command.CommandText =
25 "CREATE TABLE MyTable1(Column1 int primary key clustered, " +
26 "Column2 varchar(50), Column3 datetime)";
27 command.ExecuteNonQuery();
28 // 插入数据
29 command.CommandText = String.Format
30 ("INSERT INTO MyTable1 (Column1, Column2, Column3) " +
31 "values ({0}, '{1}', '{2}')", 1, "TestData", DateTime.Now.ToString("s"));
32 int rowsAdded = command.ExecuteNonQuery();
33 DisplayResults(command);
34 }
35 }
36 }
现在我们来看看这段代码干了些什么
1.首先,代码使用SqlConnectionStringBuilder对象来连接SQL Azure Database的master数
据库,然后以sampleDatabaseName字符串值为名来创建一个许嵩数据库
2.使用另一个SqlConnectionStringBuilder对象来连接到第一步创建的数据库
3.一旦连接上SQL Azure Database 里面刚创建的数据库,我们使用第二个
SqlConnectionStringBuilder来创建数据库表以及一些示例数据操作
4.最后,代码在数据修改前和修改后返回数据到控制台程序
如果大家想阅读连接SQL Azure的一些具体细节信息,可以参阅Connecting to a Data
Source (ADO.NET)
1.使用vs创建一个控制台程序
2.将上述代码中<ProvideUserName>替换为SQL Azure Database 登录名,格式如
login@server,如果你需要了解更多有关账户的信息可以查阅Managing Databases and
Logins in SQL Azure一文。
3.替换<ProvidePassword>为你的账户密码。
4.替换<ProvideServerName>为你的SQL Azure 服务器名,如
servername.database.windows.net,与登陆格式‘@“符号后面部分应该是一样的。
5.<ProvideDatabaseName>即是你想用你的代码创建的数据库名(原来不存在的)。
受支持的Transact-SQL特性:
常数
数据限制
数据光标
数据库索引管理与索引重建
本地数据库暂存表格
保留字
预存程序
数据库统计管理
数据库交易
触发程序
数据库表、数据表联结以及表格变量
Transact-SQL语言元素,像是对数据库、表格、用户与登录等的建立、修改与删除
用户定义函数
查看表
未受支持的Transact-SQL特性:
SQL CLR
数据库文件配置
数据库映射
分布式查询
分布式交易
文件组群管理
全局暂存表格
稀疏数据与索引
SQL Server组态选项
SQL Server Service Broker
系统表格
追踪旗标。
注意点:
通过以上的例子,我们已经对连接SQL Azure vae有了一些基本认识,现在我们来讨论一下这之间
我们需要注意的一些小问题
为了避免遭受注入攻击,我们使用SqlConnectionStringBuilder类,这也是.net framework
框架自带的类
我们需要很好的保护我们的连接字符串信息,如果让别人知道了,他们可以使用我们的数据
并且进行篡改等等一切毁灭性的损失
由于我们与SQL Azure通信过程中,这之间不知道要经过多少个路由节点,为了保护我们的连
接字符串不被别人盗用,所以我们最好设置ADO.NET Encrypt 和 TrustServerCertificate
connection parameters,如代码所示将Encrypt = True,TrustServerCertificate = False
能够确保我们的连接字符串得到加密,任何在通信中间拦截的人获取了你的连接字符串也是
没有用的。