Reader Level:
Articles

Connect Windows Store Apps to SQL Server Database Using WCF

By Prabhakar Maurya on February 13, 2013
In this article we are describing how to connect Windows Store apps to a SQL Server database using WCF.
  • 0
  • 0
  • 28714
Download Files:
 

Introduction

Today we are describing how to connect Windows Store apps to a SQL Server database using Windows Services. As we know, there is not an option in Windows Store apps to directly connect to a SQL Server database. So if you want to create a connection between Windows Store apps to SQL Server then you must use Windows Services.

This application connects a Windows Store app to a SQL Server database using WCF Services throough a Windows Service so no one can see the connection or no end user can easily close the service. That's why it is a better way than connecting the Windows Store apps to a Desktop application and the Desktop application does the database part. In this application we are using a database named "EmpDatabase" and a table named "EmployeeTable". In the EmployeeTable there are three fields, Id, Name and Address.

Step 1

Open Visual Studio 2012 and create a new project called "WCF Services library".

Step 2

In this step add the database you want to use in your application using "ADO.NET Entity data model". To do that right-click on your services application in Solution Explorer and select "Add new item". Whatever table you are using in the application, must have a primary key.

New-EDM-Windows-Store-Apps.jpg

Step 3

After adding an entity model your database table will be as follows:

Emp-Model-Windows-Store-Apps.jpg

Step 4

Go to the "IService.cs" page and replace all the code with the following code. In this page we declared the services interface.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

 

namespace WindowsService1

{

    [ServiceContract]

    public interface IService1

    {

        [OperationContract]

        bool InsertEmployee(Employee EmpInsert);

 

        [OperationContract]

        List<Employee> GetEmployee();

    }

 

    [DataContract]

    public class Employee

    {

        private string id;

        private string name;

        private string address;

 

        [DataMember]

        public string EmpId

        {

            get { return id; }

            set { id = value; }

        }

        [DataMember]

        public string EmpName

        {

            get { return name; }

            set { name = value; }

        } 

        [DataMember]

        public string EmpAddress

        {

            get { return address; }

            set { address = value; }

        }

    }

}

 

Step 5

In  "Service.cs" page replace all code with following code. In this page we declared services method.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

 

namespace WindowsService1

{

    public class Service1 : IService1

    {

        public bool InsertEmployee(Employee EmpInsert)

        {

            EmpDatabaseEntities EmpData = new EmpDatabaseEntities();

            EmployeeTable NewEmp = new EmployeeTable();

            NewEmp.Id = EmpInsert.EmpId;

            NewEmp.Name = EmpInsert.EmpName;

            NewEmp.Address = EmpInsert.EmpAddress;

 

            EmpData.EmployeeTables.Add(NewEmp);

            EmpData.SaveChanges();

            return true;

        }

 

        public List<Employee> GetEmployee()

        {

            var Emplist = new List<Employee>();

            EmpDatabaseEntities EmpData=new EmpDatabaseEntities();

            foreach (var Emp in EmpData.EmployeeTables.ToList())

            {

                Employee GetEmp = new Employee();

                GetEmp.EmpId = Emp.Id;

                GetEmp.EmpName = Emp.Name;

                GetEmp.EmpAddress = Emp.Address;

                Emplist.Add(GetEmp);

            }

            return Emplist;

        }

    }

}

Step 6

After doing that, run WCF services and copy to the services URL.

Copy-Address-Windows-Store-Apps.jpg

Step 7

Now open Visual Studio 2012 in a new window and start a new "Windows Store apps" project.

 Step 8

In this step, add a service reference. To do that right-click on the project and in Solution Explorer and select "Add Service Reference". Paste the Service URL and click on "Go". After finding the service click on "OK".

Added-Services-Windows-Store-Apps.jpg

Step 9

Go to Solution Explorer and double-click on "MainPage.xaml". Your "MainPage.xaml" page is as in the following code:

<Page

    x:Class="WindowsStoreToSql.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:local="using:WindowsStoreToSql"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d">

 

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" RenderTransformOrigin="0.508,0.484">

        <TextBox HorizontalAlignment="Left" x:Name="IdTextbox" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Margin="352,249,0,0" Width="246"/>

        <TextBox HorizontalAlignment="Left" x:Name="NameTextbox" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Margin="352,303,0,0" Width="246"/>

        <TextBox HorizontalAlignment="Left" x:Name="AddTextBox"  TextWrapping="Wrap" Text="" VerticalAlignment="Top" Margin="352,358,0,0" Width="246"/>

        <Button Content="ShowData" x:Name="ShowData" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="496,422,0,0" Click="ShowData_Click"/>

        <Button Content="InsertData" x:Name="InsertData" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="352,422,0,0" Click="InsertData_Click"/>

        <GridView HorizontalAlignment="Left" x:Name="EmpGridview"  VerticalAlignment="Top" Width="150" Margin="646,162,0,0" />

     

    </Grid>

</Page> 

Step 10

Your "MainPage.xaml.cs" page is as in the following code:

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using Windows.Foundation;

using Windows.Foundation.Collections;

using Windows.UI.Xaml;

using Windows.UI.Xaml.Controls;

using Windows.UI.Xaml.Controls.Primitives;

using Windows.UI.Xaml.Data;

using Windows.UI.Xaml.Input;

using Windows.UI.Xaml.Media;

using Windows.UI.Xaml.Navigation;

using Windows.UI.Popups;

 

namespace WindowsStoreToSql

    public sealed partial class MainPage : Page

    {

        ServiceReference1.Service1Client MyService;

        public MainPage()

        {

            this.InitializeComponent();

        } 

        protected override void OnNavigatedTo(NavigationEventArgs e)

        {

            MyService = new ServiceReference1.Service1Client();

        }

        private async void InsertData_Click(object sender, RoutedEventArgs e)

        {

            await MyService.InsertEmployeeAsync(new ServiceReference1.Employee { EmpId = IdTextbox.Text, EmpName = NameTextbox.Text, EmpAddress = AddTextBox.Text });

        } 

        private async void ShowData_Click(object sender, RoutedEventArgs e)

        {

            var EmpList = await MyService.GetEmployeeAsync();

            foreach (var Emp in EmpList)

            {

                GridViewItem EmpView = new GridViewItem();

                StackPanel Spanel = new StackPanel();

                Spanel.Children.Add(new TextBlock() { Text = Emp.EmpId });

                Spanel.Children.Add(new TextBox() { Text = Emp.EmpName });

                Spanel.Children.Add(new TextBlock() { Text = Emp.EmpAddress });

                EmpView.Content = Spanel;

                EmpGridview.Items.Add(EmpView);

            }

        }

    }

}

Step 11

Now run project. Click on "ShowData" to show your table data and click on "InsertData" to insert data into the table.

Result-Windows8-Store-Apps.jpg

COMMENT USING

Trending up