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

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能够确保我们的连接字符串得到加密,任何在通信中间拦截的人获取了你的连接字符串也是没有用的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?