使用 ADO.NET连接SQL Azure

      使用ADO.NET连接Microsoft SQL Azure Database 现在已经变得非常容易,这篇文章提供一个示例控制台程序来描述如何连接到Azure 的数据库,中间还夹杂着几个我认为连接Microsoft SQL Azure Database 的一些注意点。属于SQL Azure入门级问题。呵呵,Azure达人可以绕过。

 

控制台程序示例:

 

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>即是你想用你的代码创建的数据库名(原来不存在的)。

代码如下:

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace Microsoft.SDS.Samples
{
class Program
{
// Provide the following information
private   static   string userName =   " <ProvideUserName> " ;
private   static   string password =   " <ProvidePassword> " ;
private   static   string dataSource =   " <ProvideServerName> " ;
private   static   string sampleDatabaseName =   " <ProvideDatabaseName> " ;

static   void Main( string [] args)
{
   
// Create a connection string for the master database
    SqlConnectionStringBuilder connString1Builder;
    connString1Builder
=   new SqlConnectionStringBuilder();
    connString1Builder.DataSource
= dataSource;
    connString1Builder.InitialCatalog
=   " master " ;
    connString1Builder.Encrypt
=   true ;
    connString1Builder.TrustServerCertificate
=   false ;
    connString1Builder.UserID
= userName;
    connString1Builder.Password
= password;

   
// Create a connection string for the sample database
    SqlConnectionStringBuilder connString2Builder;
    connString2Builder
=   new SqlConnectionStringBuilder();
    connString2Builder.DataSource
= dataSource;
    connString2Builder.InitialCatalog
= sampleDatabaseName;
    connString2Builder.Encrypt
=   true ;
    connString2Builder.TrustServerCertificate
=   false ;
    connString2Builder.UserID
= userName;
    connString2Builder.Password
= password;

   
// Connect to the master database and create the sample database
    using (SqlConnection conn =   new SqlConnection(connString1Builder.ToString()))
    {
       
using (SqlCommand command = conn.CreateCommand())
        {

            conn.Open();

           
// Create the sample database
            string cmdText = String.Format( " CREATE DATABASE {0} " ,
                                            sampleDatabaseName);
            command.CommandText
= cmdText;
            command.ExecuteNonQuery();
            conn.Close();
        }
    }

   
// Connect to the sample database and perform various operations
    using (SqlConnection conn =   new SqlConnection(connString2Builder.ToString()))
    {
       
using (SqlCommand command = conn.CreateCommand())
        {
            conn.Open();

           
// Create a table
            command.CommandText =   " CREATE TABLE T1(Col1 int primary key, Col2 varchar(20)) " ;
            command.ExecuteNonQuery();

           
// Insert sample records
            command.CommandText =   " INSERT INTO T1 (col1, col2) values (1, 'string 1'), (2, 'string 2'), (3, 'string 3') " ;
           
int rowsAdded = command.ExecuteNonQuery();

           
// Query the table and print the results
            command.CommandText =   " SELECT * FROM T1 " ;

           
using (SqlDataReader reader = command.ExecuteReader())
            {
               
// Loop over the results
                while (reader.Read())
                {
                    Console.WriteLine(
" Col1: {0}, Col2: {1} "
                                    reader[
" Col1 " ].ToString().Trim(), 
                                    reader[
" Col2 " ].ToString().Trim());
                }
            }

           
// Update a record
            command.CommandText =   " UPDATE T1 SET Col2='string 1111' WHERE Col1=1 " ;
            command.ExecuteNonQuery();

           
// Delete a record
            command.CommandText =   " DELETE FROM T1 WHERE Col1=2 " ;
            command.ExecuteNonQuery();

           
// Query the table and print the results

            Console.WriteLine(
" \nAfter update/delete the table has these records... " );

            command.CommandText
=   " SELECT * FROM T1 " ;

           
using (SqlDataReader reader = command.ExecuteReader())
            {
               
// Loop over the results
                while (reader.Read())
                {
                    Console.WriteLine(
" Col1: {0}, Col2: {1} "
                                    reader[
" Col1 " ].ToString().Trim(), 
                                    reader[
" Col2 " ].ToString().Trim());
                }
            }

            conn.Close();
        }
    }
    Console.WriteLine(
" Press enter to continue... " );
    Console.ReadLine();
}
}
}

 

 

现在我们来看看这段代码干了些什么

1.首先,代码使用SqlConnectionStringBuilder对象来连接SQL Azure Database的master数据库,然后以sampleDatabaseName字符串值为名来创建一个数据库

2.使用另一个SqlConnectionStringBuilder对象来连接到第一步创建的数据库

3.一旦连接上SQL Azure Database 里面刚创建的数据库,我们使用第二个SqlConnectionStringBuilder来创建数据库表以及一些示例数据操作

4.最后,代码在数据修改前和修改后返回数据到控制台程序

如果大家想阅读连接SQL Azure的一些具体细节信息,可以参阅Connecting to a Data Source (ADO.NET)

 

 

注意点:

通过以上的例子,我们已经对连接SQL Azure有了一些基本认识,现在我们来讨论一下这之间我们需要注意的一些小问题

  • 为了避免遭受注入攻击,我们使用SqlConnectionStringBuilder类,这也是.net framework框架自带的类
  • 我们需要很好的保护我们的连接字符串信息,如果让别人知道了,他们可以使用我们的数据并且进行篡改等等一切毁灭性的损失
  • 由于我们与SQL Azure通信过程中,这之间不知道要经过多少个路由节点,为了保护我们的连接字符串不被别人盗用,所以我们最好设置ADO.NET Encrypt 和 TrustServerCertificate connection parameters,如代码所示将Encrypt = True,TrustServerCertificate = False能够确保我们的连接字符串得到加密,任何在通信中间拦截的人获取了你的连接字符串也是没有用的。

 

 

转载于:https://www.cnblogs.com/Creator/archive/2011/05/20/2051601.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值