Baqka يوللانغان ۋاقتى 2012-1-6 11:42:40

Windows Phone 7.1 (مانگو) دا SQLSeerver CE ساندان ماڭدۇرغىلى بولىدۇ

Windows Phone 7.1 (مانگو) دا SQLSeerver CE ساندان ماڭدۇرغىلى بولىدۇ

http://www.cnblogs.com/linzheng/archive/2011/06/08/2075593.html


Windows Phone نىڭ تۇنجى نەشىرى 7.0 دە يەرلىك ساندان قوللىمايدىغان بولۇپ، ساندان ئىشلەتمەكچى بولسا پەقەت ئۈچىنچى تەرەپ ساندان بۆلىكى ئىشلىتىشكىلا توغرا كېلىدۇ. Windows Phone نىڭ SQL Server CE يەرلىك ساندانى بولسا ماڭگودا يېڭىلانغان يېڭى ئالاھىدىلىكى بولۇپ،

سىز قوللانما پروگراممىدا SQL Server CE ساندان ئىشلەتمەكچى بولسىڭىز چوقۇم Windows Phone7.1نىڭ API نى ئىشلىتىشىڭىز لازىم.

تۈۋەندە بىر ئەمەلىي مىسال ئارقىلىق SQL Server CE نى قانداق ئىشلىتىش كۆرسىتىلىدۇ.

(1) ساندان جەدۋىلى قۇرۇش ۋە سانداندىكى مەلۇمات ماسلىق خەت DateContent

ئاۋال بىر خادىم ئۇچۇر جەدۋىلى قۇرىمىز، خادىم ئىسمى ۋە تۇنۇشتۇرۇشىنى ساقلاشقا ئىشلىتىلىدۇ، خىزمەتچى جەدۋىلىدە بىر ئاشار ID بولىدۇ.

EmployeeTable.cs


using System.Data.Linq.Mapping;

using System.ComponentModel;



namespace SQLServerDemo

{

   

   
public class EmployeeTable : INotifyPropertyChanged, INotifyPropertyChanging

    {

      //خادىم جەدۋىلىنىڭ ئاشار ID سىنى بەلگىلەش، ئاچقۇچ قىلىندۇ.


      private int _employeeId;



      

      
public int EmployeeID

      {

            
get

            {

               
return _employeeId;

            }

            
set

            {

               
if (_employeeId != value)

                {

                  NotifyPropertyChanging(
"EmployeeID");

                  _employeeId
= value;

                  NotifyPropertyChanged(
"EmployeeID");

                }

            }

      }



      //خادىم ئىسمى ھالقىسىنى ئېنىقلاش


      private string _employeeName;



      

      
public string EmployeeName

      {

            
get

            {

               
return _employeeName;

            }

            
set

            {

               
if (_employeeName != value)

                {

                  NotifyPropertyChanging(
"EmployeeName");

                  _employeeName
= value;

                  NotifyPropertyChanged(
"EmployeeName");

                }

            }

      }



      //خادىم تۇنۇشتۇرۇلۇشى ھالقىسىنى ئېنىقلاش


      private string _employeeDesc;



      

      
public string EmployeeDesc

      {

            
get

            {

               
return _employeeDesc;

            }

            
set

            {

               
if (_employeeDesc != value)

                {

                  NotifyPropertyChanging(
"EmployeeDesc");

                  _employeeDesc
= value;

                  NotifyPropertyChanged(
"EmployeeDesc");

                }

            }

      }



      
#region INotifyPropertyChanged Members



      
public event PropertyChangedEventHandler PropertyChanged;



       //جەدۋەلنىڭ ھالقىسىدا سانلىق مەلۇماتنىڭ ئۆزگەرگەنلىگىنى بەتكە ئۇقتۇرۇشقا ئىشلىتىلىدۇ


      private void NotifyPropertyChanged(string propertyName)

      {

            
if (PropertyChanged != null)

            {

                PropertyChanged(
this, new PropertyChangedEventArgs(propertyName));

            }

      }



      
#endregion



      
#region INotifyPropertyChanging Members



      
public event PropertyChangingEventHandler PropertyChanging;



       //جەدۋەل ھالقىسى مەلۇماتىنىڭ ئۆزگەرمەكچى بولغانلىقىنى ماسلىق خېتىگە ئۇقتۇرۇشقا ئىشلىتىلىدۇ


      private void NotifyPropertyChanging(string propertyName)

      {

            
if (PropertyChanging != null)

            {

                PropertyChanging(
this, new PropertyChangingEventArgs(propertyName));

            }

      }



      
#endregion



    }

}


سانداننىڭ DataContent سىنى قۇرۇش، بىر EmployeeDataContext تۈرى قۇرۇش ئارقىلىق DataContext غا ۋارىسلىق قىلىپ، EmployeeDataContext ئىچىدە ساندان ئۇلاش تىزمىسى، خادىم ئۇچۇر جەدۋىلى ئېنىقلايدۇ.


using System.Data.Linq;



namespace SQLServerDemo

{

   
public class EmployeeDataContext : DataContext

    {



       //ساندان ئۇلاش تىزمىسى


      public static string DBConnectionString = "Data Source=isostore:/Employee.sdf";



       //ساندان ئۇلاش تىزمىسىنى DataContextئاساسى تۈرگە يوللايدۇ


      public EmployeeDataContext(string connectionString)

            :
base(connectionString)

      { }



       //بىر خادىم جەدۋىلى ئېنىقلايدۇ


      public Table<EmployeeTable> Employees;

    }

}


(2) بەت مەلۇماتلىرى باغلاش توپىنى قۇرۇش

using System.ComponentModel;

using System.Collections.ObjectModel;



namespace SQLServerDemo

{


      //EmployeeCollection بولسا بەتتىكى مەلۇماتقا باغلاشقا ئىشلىتىلىدۇ


    public class EmployeeCollection : INotifyPropertyChanged

    {



       //ObservableCollection نى ئېنىقلاش ئارقىلىق بەتتىكى مەلۇماتنى باغلاش


      private ObservableCollection<EmployeeTable> _employeeTables;

      
public ObservableCollection<EmployeeTable> EmployeeTables

      {

            
get

            {

               
return _employeeTables;

            }

            
set

            {

               
if (_employeeTables != value)

                {

                  _employeeTables
= value;

                  NotifyPropertyChanged(
"EmployeeTables");

                }

            }

      }



      
#region INotifyPropertyChanged Members



      
public event PropertyChangedEventHandler PropertyChanged;



       //خاسلىقنىڭ ئۆزگەرگەنلىكىنى ئۇقتۇرۇشقا ئىشلىتىلىدۇ


      private void NotifyPropertyChanged(string propertyName)

      {

            
if (PropertyChanged != null)

            {

                PropertyChanged(
this, new PropertyChangedEventArgs(propertyName));

            }

      }

      
#endregion

    }

}

(3) ساندان قۇرۇش، مەلۇمات باغلاش، خادىم ئۇچۇرى جەدۋىلىنىڭ قوشۇش ئۆچۈرۈش ئۆزگەرتىش ئىزدەش مەشغۇلاتىنى ئورۇنداش.

App.xaml.cs دىكى تەرتىپ يۈكلەش ئەھۋالى ئىچىدە ساندان قۇرۇۋېتىش


private void Application_Launching(object sender, LaunchingEventArgs e)

      {



         //ئەگەر ساندان مەۋجۇت بولمىسا بىر ساندان قۇرۇش


            using (EmployeeDataContext db = new EmployeeDataContext(EmployeeDataContext.DBConnectionString))

            {

               
if (db.DatabaseExists() == false)

                {



             //ساندان قۇرۇش


                  db.CreateDatabase();

                }

            }

      }


MainPage.xaml.cs ھۆججىتىنىڭ كودى


<phone:PhoneApplicationPage

   
x:Class="SQLServerDemo.MainPage"

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

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

    xmlns:phone
="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"

    xmlns:shell
="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"

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

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

    mc:Ignorable
="d" d:DesignWidth="480" d:DesignHeight="768"

    FontFamily
="{StaticResource PhoneFontFamilyNormal}"

    FontSize
="{StaticResource PhoneFontSizeNormal}"

    Foreground
="{StaticResource PhoneForegroundBrush}"

    SupportedOrientations
="Portrait" Orientation="Portrait"

    shell:SystemTray.IsVisible
="True">



   
<Grid x:Name="LayoutRoot" Background="Transparent">

      
<Grid.RowDefinitions>

            
<RowDefinition Height="Auto"/>

            
<RowDefinition Height="*"/>

      
</Grid.RowDefinitions>



      
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">

            
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>

            
<TextBlock x:Name="PageTitle" Text="SQL Server" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>

      
</StackPanel>



      
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

            
<Grid Margin="0,0,0,385">

               
<Grid.ColumnDefinitions>

                  
<ColumnDefinition Width="*" />

                  
<ColumnDefinition Width="Auto" />

               
</Grid.ColumnDefinitions>

               
<TextBlock FontSize="30" Height="37" HorizontalAlignment="Left" Margin="12,18,0,0" Name="textBlock1" Text="员工名字:" VerticalAlignment="Top" />

               
<TextBox Name="name" Text=""Margin="145,0,6,144" />

               

               
<TextBlock FontSize="30" Height="52" HorizontalAlignment="Left" Margin="18,74,0,0" Name="textBlock2" Text="简介:" VerticalAlignment="Top" />

               
<TextBox Height="79" HorizontalAlignment="Left" Margin="93,65,0,0" Name="desc" Text="" VerticalAlignment="Top" Width="357" />



               
<Button

                  
Content="保存" x:Name="addButton"

                  Click
="addButton_Click" Margin="219,132,6,6" />



            
</Grid>



            
<ListBox x:Name="toDoItemsListBox" ItemsSource="{Binding EmployeeTables}" Margin="12,241,12,0" Width="440">

               
<ListBox.ItemTemplate>

                  
<DataTemplate>

                        
<Grid HorizontalAlignment="Stretch" Width="440">

                           
<Grid.ColumnDefinitions>

                              
<ColumnDefinition Width="50" />

                              
<ColumnDefinition Width="*" />

                              
<ColumnDefinition Width="100" />

                           
</Grid.ColumnDefinitions>

                        

                           
<TextBlock

                              
Text="{Binding EmployeeName}"

                              FontSize
="{StaticResource PhoneFontSizeLarge}"

                              Grid.Column
="1"

                              VerticalAlignment
="Center"/>

                           
<Button

                              
Grid.Column="2"

                              x:Name
="deleteButton"

                              BorderThickness
="0"                              

                              Margin
="0"

                              Click
="deleteButton_Click"

                              Content
="删除">

                           
</Button>

                           
<Button

                              
Grid.Column="1"

                              x:Name
="editButton"

                              BorderThickness
="0"                              

                              Margin
="209,0,81,0"

                              Click
="editButton_Click"

                              Content
="编辑" Grid.ColumnSpan="2">

                           
</Button>

                        
</Grid>

                  
</DataTemplate>

               
</ListBox.ItemTemplate>

            
</ListBox>   

      
</Grid>

   
</Grid>



</phone:PhoneApplicationPage>


MainPage.xaml.cs ھۆججىتىنىڭ كودى


using System.Linq;

using System.Windows;

using System.Windows.Controls;

using Microsoft.Phone.Controls;

using System.Collections.ObjectModel;



namespace SQLServerDemo

{

   
public partial class MainPage : PhoneApplicationPage

    {



      //DataContext مىسالى قۇرۇپ، يەرلىك ساندانغا مەشغۇلات قىلىش


      private EmployeeDataContext employeeDB;

      
private EmployeeCollection employeeCol = new EmployeeCollection();



      
public MainPage()

      {

            InitializeComponent();



         //ساندانغا ئۇلاش ۋە DataContext مىسالىنى دەسلەپلەشتۈرۈش


            employeeDB = new EmployeeDataContext(EmployeeDataContext.DBConnectionString);



         //Linq نىڭ ئىزدەش جۈملىسى ئارقىلىق EmployeeTable جەدۋىلىدىكى بارلىق مەلۇماتنى ئىزدەش


            var employeesInDB = from EmployeeTable employee in employeeDB.Employees

                              select employee;



         //ئىزدەش نەتىجىسىنى بەتتىكى مەلۇمات باغلانغان توپلام ئىچىگە قايتۇرۇش


            employeeCol.EmployeeTables = new ObservableCollection<EmployeeTable>(employeesInDB);



         //نۆۋەتتىكى بەتتىكى DataContext قا قىممەت بېرىپ، مەلۇمات باغلاش


            this.DataContext = employeeCol;

      }



      
/// <summary>

       ///ئۆچۈرۈش مەشغۇلاتى


      
/// </summary>

      
/// <param name="sender"></param>

      
/// <param name="e"></param>

      private void deleteButton_Click(object sender, RoutedEventArgs e)

      {


      //كۇنۇپكا چېكىلىشنى ئېلىش مىسالى


            var button = sender as Button;



            
if (button != null)

            {


            //نۆۋەتتىكى كۇنۇپكىغا باغلانغان DataContext نى، ھەمدە نۆۋەتتىكى ئۆچۈرىدىغان EmployeeTable مىسالىنى ئېلىش


                EmployeeTable employeeForDelete = button.DataContext as EmployeeTable;

            //باغلانما توپلام ئىچىدىكى ئۆچۈرمەكچى بولغان EmployeeTable خاتىرىسىنى چىقىرىۋېتىش


                employeeCol.EmployeeTables.Remove(employeeForDelete);

            //ساندان ئىچىدىكى ئۆچۈرمەكچى بولغان EmployeeTable خاتىرىسىنى چىقىرىۋېتىش


                employeeDB.Employees.DeleteOnSubmit(employeeForDelete);

            //ساندان ئۆزگىرىشىنى ساقلاش


                employeeDB.SubmitChanges();

            }

      }



      
/// <summary>

       ///ساقلاش مەشغۇلاتى، يېڭىدىن قوشۇلغان ۋە تەھرىرلەنگەن خادىم ئۇچۇرىنى بىر تەرەپ قىلىش


      
/// </summary>

      
/// <param name="sender"></param>

      
/// <param name="e"></param>

      private void addButton_Click(object sender, RoutedEventArgs e)

      {


         //خادىم ئىسمى ۋە تۇنۇشتۇرۇلۇشىنىڭ قۇرۇق بولماسلىقىنى باشقۇرۇش


            if (name.Text != "" && desc.Text != "")

            {

               
if (State.Count>0 && State["employee"] != null )//تەھرىرلەش ھالىتى

                {

               //تەھرىرلەنگەن EmployeeTable نىشانىنى ئېلىش


                  EmployeeTable employee = (EmployeeTable)State["employee"];

                  employee.EmployeeName
= name.Text;

                  employee.EmployeeDesc
= desc.Text;

            //ساندان ئۆزگىرىشىنى ساقلاش


                  employeeDB.SubmitChanges();

               //باغلانما توپلام مەلۇماتلىرىنى قوشۇش، چۈنكى تەھرىرلەشنى چەككەندە چىقىرىۋېتىلگەن


                  employeeCol.EmployeeTables.Add(employee);

                  State[
"employee"] = null;

                }

               
else//يېڭى قوشۇش ھالىتى



                {



               //جەدۋەلگە بىر قۇر مەلۇمات قۇرۇش


                  EmployeeTable newEmployee = new EmployeeTable { EmployeeName = name.Text, EmployeeDesc = desc.Text };



            //باغلانما توپلام مەلۇماتىنى قوشۇش


                  employeeCol.EmployeeTables.Add(newEmployee);



            //ساندانغا قىستۇرۇش


                  employeeDB.Employees.InsertOnSubmit(newEmployee);



            //ساندان ئۆزگىرىشىنى ساقلاش


                  employeeDB.SubmitChanges();

                }

               

                name.Text
= "";

                desc.Text
= "";

            }

            
else

            {

                MessageBox.Show(
"姓名和简介不能为空!");

            }

      }



      
/// <summary>

       ///تەھرىرلەش مەشغۇلاتى


      
/// </summary>

      
/// <param name="sender"></param>

      
/// <param name="e"></param>

      private void editButton_Click(object sender, RoutedEventArgs e)

      {


         //كۇنۇپكىنىڭ چېكىلىشىنى ئېلىش مىسالى


            var button = sender as Button;



            
if (button != null)

            {


            //نۆۋەتتىكى كۇنۇپكىغا باغلانغان DataContext نى، ھەمدە نۆۋەتتە تەھرىرلىگەن EmployeeTable مىسالىنى ئېلىش


                EmployeeTable employeeForEdit = button.DataContext as EmployeeTable;

                name.Text
= employeeForEdit.EmployeeName;

                desc.Text
= employeeForEdit.EmployeeDesc;

            //تەھرىرلىمەكچى بولغان مىسالنى State ئىچىگە ساقلاش


                State["employee"] = employeeForEdit;

                employeeCol.EmployeeTables.Remove(employeeForEdit);

            }

      }

    }

}


ئىجرا ھالىتى:




ئىزاھ:






































































































بۇغۇم سانى 汉文/英文 ئۇيغۇرچە بۇغۇم سانى ئىزاھ
5 本地数据库 يەرلىك ساندان 4
4 应用程序 ئەپ تەرتىپ 3 بۇرۇنقى ئەمەلىي قوللىنىلىدىغان پروگرامما (بۇغۇم سانى: 13) دىگەن تولۇق سۆزدىن ئىخچاملانغان، ئەپ بولسا ئەپلىك سۆزىنىڭ يىلتىزى، پروگرامما سۆزىنىڭ باشقا تىلدىكى مەنىسى بولسا تەرتىپ. Application نى ئېنگىلىزلارمۇ تور ۋە كەسپىي جۈملىلەردە app دەپ قىسقارتىپ ئېلىۋاتىدۇ.
2 字段 ھالقا 2
2 主键 ئاچقۇچ 2
2 ID ID 2 Identity نىڭ قىسقارتىلمىسى. قانداق قىلىمىز؟
2 数据 مەلۇمات 3 سانلىق مەلۇمات سۆزىدىن ئىخچاملاشتۇرۇلدى، مەلۇمات سۆزى ھەر قانداق ئۇچۇرغا، جۈملىدىن سان، سۈرەت، ئاۋاز، سىن ھەممىسىنى مۇۋاپىق ئىپادىيەلەيدۇ، كومپيۇتېر كەسپىي ئاتالغۇسىدا شۇ مەزمۇننى ئىپادىلەشكە ئادەتلەنسەك بولىدۇ.
3 上下文 ماسلىق خەت 3 context سۆزىنىڭ كومپيۇتېر كەسپىدىكى مەنىسىنى ئىپادىلەيدۇ، ئىپادىلەيدىغان مەنىسى بولسا، پۈتۈن پروگراممىنىڭ باشتىن- ئاخىر قىسىمىدا ساندان ئۇلىنىش بەلگىلىرى قاتارلىق مىقدارلارنى بىرلىككە كەلتۈرۈش، ماسلاشتۇرۇش رولىنى ئوينايدىغان بىر بۆلەك خەت. (تېكست سۆزىنىڭ باشقا تىلدىكى مەنىسى بولسا خەت)
5 自增的ID ئاشار ID 4 ئۆزى ئاشار مەنىسىدىن تېخىمۇ قىسقارتىلدى، نىشان مەنىدە قوللىنىشقا مۇۋاپىق
1 类, Class تۈر 1 تەكلىپ ئاتالغۇ. كۆنمەك سەل تەل، مۇناسىۋەتلىك جۈملىدە بىلگىلى بولىدۇ.
3 字符串 ھەرپ تىزىق 3 لوغەتتە ھەرپ-بەلگە تىزىقى (بۇغۇم سانى:6) دەپ ئېلىنغان، لېكىن پروگراممېرلارنىڭ قىممەتلىك سۆز ۋاقتى ئۈچۈن قىسقارتىپ ئادەتلەنسەك.
5 连接字符串



ئۇلاش ھەرپ تىزىقى

ئۇلاش ھەرپ تىزمىسى

ئۇلاش تىزمىسى
6

6

5




بۇ ئىككىلا سۆز بولغاچقا، پروگراممېرلار ۋە ئوقۇغۇچىلار ئاسانلا ئادەتلىنىشى مۇمكىن.
2 加载 يۈكلەش 2
4 加载事件 يۈكلەش ئەھۋالى 5

Qarluq يوللانغان ۋاقتى 2012-1-7 12:54:02

نىمە ئىش بۇلۇپ كەتتى.. مەن ھىچنىمنى چۈشنەلمىدىمغۇ...   {:106:}    {:107:}   \"\"\"\"
بەت: [1]
: Windows Phone 7.1 (مانگو) دا SQLSeerver CE ساندان ماڭدۇرغىلى بولىدۇ