Tuesday, September 8, 2009

Accessing SQL Azure Using ADO.NET

In my first post on SQL Azure (SQL Azure: A First Contact) I talked about how you can access SQL Azure using SQL Server 2008 Management Studio (SSMS).

In this post, the journey continues with “walking” on the cloud using ADO .NET :)

Here’s the recipe!

Ingredients
  • A valid SQL Azure CTP account
  • Visual Studio 2008 SP1
  • .NET Framework 3.5 SP1
  • C# (or respective VB.NET) namespace: System.Data.SqlClient
Objects used from System.Data.SqlClient namespace:
  • SqlConnection
  • SqlCommand
  • SqlDataReader
  • SqlDataAdapter
Process
  • Step 1: Add namespace for using SqlClient
  • Step 2: Set up connection to database
  • Step 3: Open database connection
  • Step 4: Set the T-SQL command(s) - Use the "SqlCommand" object
  • Step 5: Open the SqlDataReader - Execute the T-SQL command(s)
  • Step 6: Display the results (if any)
  • Step 7: Close the SqlDataReader
  • Step 8: Close the database connection
Source Code (for obvious reasons I removed the connection string from the source code file)
  • You can find the sample source code for this post here.
  • *Note: This sample code is for demo purposes and does not represent production code.
Considerations
  • My example is based on the example in my previous post on SQL Azure (Database Name: sqlazure, table name: CLOUD_MSGS)
  • For this post I used a new Visual C# “Console Application” project named ADO .NET – SQL Azure like in the following screenshot:


Screenshot of the output


Have fun!

Drop me a comment if you need any help implementing the ADO.NET connection to SQL Azure!
[Ads]
Check out my latest eBook on SQL Server:
Tuning SQL Server - Ebook

Easily secure your SQL Server instances! Try out DBA Security Advisor!
DBA Security Advisor for SQL Server by SQLArtBits
DBA Security Advisor was developed by SQLArtBits. The tool was being carefully developed for an entire year and it contains comprehensive security checks and recommendations based on proven SQL Server security best practices. Feel free to download and use the Community Edition which is free and if you find it useful, you can consider upgrading to the Enterprise Edition!

Artemakis Artemiou [MVP]

Author & Editor

Artemakis Artemiou is a Senior SQL Server Architect, Software Developer and Microsoft Data Platform MVP. He is also an author, regular blogger, president of Cyprus.NET User Group and CY Country leader of INETA-EU. He is also the creator of DBA Security Advisor and In-Memory OLTP Simulator. Artemakis is a frequent guest author of worldwide well-respected online journals where he writes articles focusing on many SQL Server topics.

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

2 comments:

Bablu Singh said...

I am not able to connect to SQL Azure.

Here is what my code is:

using (SqlConnection conn = new SqlConnection("Server=ufh1cinawq.database.windows.net;Database=MASTER;User ID=vksingh24;Password=xxx;Trusted_Connection=False"))
{
using (SqlCommand command = conn.CreateCommand())
{
conn.Open();

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

// Insert sample records
command.CommandText = "INSERT INTO Vikash(col1, col2) values (1, 'Vikash Kumar Singh'), (2, 'Kumar Saurabh'), (3, 'RockStar')";
int rowsAdded = command.ExecuteNonQuery();

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

using (SqlDataReader reader = command.ExecuteReader())
{
// Loop over the results
while (reader.Read())
{
MessageBox.Show(reader["Col1"].ToString().Trim());
MessageBox.Show(reader["Col2"].ToString().Trim());
}
reader.Close();
}

conn.Close();
}
}



I also check the firewall setting. Please help me to connect to SQL Azure.

Artemakis Artemiou [MVP] said...

Hi,

You need to properly configure the Firewall settings from within the SQL Azure - Server Administration web page.

To this end you can add a new Firewall rule, give it a name you like, and in the IP range include your public IP (the "Add Firewall Rule" dialog displays your public IP).

Then wait for a few minutes and try again.

I have also noticed that in the connection string you are using the "master" database and then you are trying to create a new table in it. Note that you cannot create a table in the master database as it is a system database. You can create a new database instead and work with it.

Hope this helps!

Cheers,
Artemakis