silverlight連接SQLite數據庫,增刪改查

1,在web程序中添加新建項-啓用了silverlight的wcf服務,命名爲ServiceSQLite

using System.Data;
using System.Collections.Generic;
using System.Data.SQLite;

namespace Projects_Manager.Web
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class ServiceSQLite
    {
         [OperationContract]
        public List<ClassEmployee> getUser()
        {
            DataSet ds = DBSQLite.DBselect("select * from UserData");

            List<ClassEmployee> userList = new List<ClassEmployee>();

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                ClassEmployee user = new ClassEmployee();//userList是引用類型,所以這句不能放foreach外面
                user.ID =int.Parse( dr["ID"].ToString());
                user.Name = (string)dr["Name"];
                user.Group = (int)dr["Group"];
                user.Pwd = (string)dr["Pwd"];
                user.Limit = (int)dr["Limit"];
                user.ProLimit0 = dr["ProLimit0"] == DBNull.Value ? 1 : (int)dr["ProLimit0"];
                user.ProLimit1 = dr["ProLimit1"] == DBNull.Value ? 1 : (int)dr["ProLimit1"];
                user.ProLimit2 = dr["ProLimit2"] == DBNull.Value ? 1 : (int)dr["ProLimit2"];
                user.ProLimit3 = dr["ProLimit3"] == DBNull.Value ? 1 : (int)dr["ProLimit3"];
                user.ProLimit4 = dr["ProLimit4"] == DBNull.Value ? 1 : (int)dr["ProLimit4"];
                user.ProLimit5 = dr["ProLimit5"] == DBNull.Value ? 1 : (int)dr["ProLimit5"];
                userList.Add(user);
            }
            return userList;
        }

        [OperationContract]
        public void InsertUser(string Name, string Pwd, int Group, int Limit)
        {
            DBSQLite.InsertUser(Name, Pwd, Group, Limit);
        }

        [OperationContract]
        public void DeleteUser(int ID)
        {
            DBSQLite.DeleteUser(ID);
        }

        [OperationContract]
        public void UpdataPwd(int ID, string Pwd)
        {
            DBSQLite.UpdataPwd(ID, Pwd);
        }

         [DataContract]
        public class ClassEmployee
        {
            [DataMember]
            public int ID;
            [DataMember]
            public string Name;
            [DataMember]
            public string Pwd;
            [DataMember]
            public int Group;
            [DataMember]
            public int Limit;
            [DataMember]
            public int ProLimit0;
            [DataMember]
            public int ProLimit1;
            [DataMember]
            public int ProLimit2;
            [DataMember]
            public int ProLimit3;
            [DataMember]
            public int ProLimit4;
            [DataMember]
            public int ProLimit5;
        }

    }
}

2.添加一個類

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SQLite;
using System.Data;

namespace Projects_Manager.Web
{
    public class DBSQLite
    {
     /// <summary>
       /// 數據庫查找
       /// </summary>
       /// <param name="sql"></param>
       /// <returns></returns>
        static public DataSet DBselect(string sql)
        {
            string dbPath = AppDomain.CurrentDomain.BaseDirectory + "database.db";//指定數據庫路徑  

            using (SQLiteConnection conn = new SQLiteConnection("Data Source =" + dbPath))//創建連接  
            {
                conn.Open();//打開連接  
                using (SQLiteTransaction tran = conn.BeginTransaction())//實例化一個事務  
                {
                    SQLiteCommand cmdQ = new SQLiteCommand(sql, conn);
                    SQLiteDataAdapter EmployeeAdapter = new SQLiteDataAdapter();
                    EmployeeAdapter.SelectCommand = cmdQ;
                    DataSet rs = new DataSet();
                    EmployeeAdapter.Fill(rs);

                    //SQLiteDataReader reader = cmdQ.ExecuteReader();
                    //tran.Commit();//提交 
                    //conn.Close();
                    return rs;
                }
            }
        }
        /// <summary>
        /// 數據庫插入
        /// </summary>
        /// <param name="Name"></param>
        /// <param name="Pwd"></param>
        /// <param name="Group"></param>
        /// <param name="Limit"></param>
        static public void InsertUser(string Name, string Pwd, int Group, int Limit)
        {
            string dbPath = AppDomain.CurrentDomain.BaseDirectory + "database.db";//指定數據庫路徑 

            using (SQLiteConnection conn = new SQLiteConnection("Data Source =" + dbPath))//創建連接  
            {
                conn.Open();//打開連接  
                using (SQLiteTransaction tran = conn.BeginTransaction())//實例化一個事務  
                {
                        SQLiteCommand cmd = new SQLiteCommand(conn);//實例化SQL命令  
                        cmd.Transaction = tran;
                        cmd.CommandText = "INSERT INTO [UserData] ([Name], [Pwd], [Group], [Limit]) VALUES (@Name,@Pwd,@Group,@Limit)";//設置帶參SQL語句  
                        cmd.Parameters.AddRange(new[] {//添加參數  
                           new SQLiteParameter("@Name", Name),  
                           new SQLiteParameter("@Pwd", Pwd),  
                           new SQLiteParameter("@Group", Group),
                           new SQLiteParameter("@Limit", Limit)  
                       });
                        cmd.ExecuteNonQuery();//執行查詢  
                        tran.Commit();//提交  
                }
            }
        }
        /// <summary>
        /// 數據庫刪除
        /// </summary>
        /// <param name="ID"></param>
        static public void DeleteUser(int ID)
        {
            string dbPath = AppDomain.CurrentDomain.BaseDirectory + "database.db";//指定數據庫路徑 

            using (SQLiteConnection conn = new SQLiteConnection("Data Source =" + dbPath))//創建連接  
            {
                conn.Open();//打開連接  
                using (SQLiteTransaction tran = conn.BeginTransaction())//實例化一個事務  
                {
                    string sql = "DELETE FROM UserData WHERE ID = @ID";
                    SQLiteCommand command = new SQLiteCommand(sql, conn);
                    conn.Close();
                    tran.Commit();//提交  
                }
            }
        }
        /// <summary>
        /// 數據庫修改
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="Pwd"></param>
        static public void UpdataPwd(int ID, string Pwd)
        {
            string dbPath = AppDomain.CurrentDomain.BaseDirectory + "database.db";//指定數據庫路徑 

            using (SQLiteConnection conn = new SQLiteConnection("Data Source =" + dbPath))//創建連接  
            {
                conn.Open();//打開連接  
                using (SQLiteTransaction tran = conn.BeginTransaction())//實例化一個事務  
                {
                    SQLiteCommand cmd = new SQLiteCommand(conn);//實例化SQL命令  
                    cmd.Transaction = tran;
                    cmd.CommandText = "UPDATE  [UserData] SET [Pwd]=@Pwd  WHERE [ID]=@ID";//設置帶參SQL語句  
                    cmd.Parameters.AddRange(new[] {//添加參數  
                           new SQLiteParameter("@Pwd", Pwd),  
                           new SQLiteParameter("@ID", ID),  
                       });
                    cmd.ExecuteNonQuery();//執行查詢  
                    tran.Commit();//提交  
                }
            }
        }
        /// <summary>
        /// 數據庫修改
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="Limit"></param>
        static public void UpdataLimit(int ID, int Limit)
        {
            string dbPath = AppDomain.CurrentDomain.BaseDirectory + "database.db";//指定數據庫路徑 

            using (SQLiteConnection conn = new SQLiteConnection("Data Source =" + dbPath))//創建連接  
            {
                conn.Open();//打開連接  
                using (SQLiteTransaction tran = conn.BeginTransaction())//實例化一個事務  
                {
                    SQLiteCommand cmd = new SQLiteCommand(conn);//實例化SQL命令  
                    cmd.Transaction = tran;
                    cmd.CommandText = "UPDATE  [UserData] SET [Limit]=" + Limit + "  WHERE [ID]=" + ID;//設置帶參SQL語句  
                    cmd.ExecuteNonQuery();//執行查詢  
                    tran.Commit();//提交  
                }
            }
        }

    }
}

3.在客戶端項目中添加服務引用,點擊發現,添加

4.在客戶端就可以進行相關的數據庫操作

//得到數據中的信息
ServiceReference1.ServiceSQLiteClient myClient = new ServiceReference1.ServiceSQLiteClient();
myClient.getUserCompleted += new EventHandler<ServiceReference1.getUserCompletedEventArgs>(myGetUserCompleted);
myClient.getUserAsync();

void myGetUserCompleted(object sender, ServiceReference1.getUserCompletedEventArgs e)
        {
            System.Collections.ObjectModel.ObservableCollection<ServiceReference1.ServiceSQLiteClassEmployee> users = e.Result;
            for (int i = 0; i < users.Count; i++)
            {
                UserData.Add(new Users { Id = users[i].ID,Name=users[i].Name,Pwd=users[i].Pwd,Group=users[i].Group,Limit=users[i].Limit,
                                         ProLimit0 = users[i].ProLimit0,
                                         ProLimit1 = users[i].ProLimit1,
                                         ProLimit2 = users[i].ProLimit2,
                                         ProLimit3 = users[i].ProLimit3,
                                         ProLimit4 = users[i].ProLimit4,
                                         ProLimit5 = users[i].ProLimit5
                });
            }
        }

 //往數據庫中寫入數據
ServiceReference1.ServiceSQLiteClient myClient = new ServiceReference1.ServiceSQLiteClient();
            myClient.InsertProTestAsync(test.Pro_Id,test.Pro_Vision,test.Pro_TestValue, test.Pro_TestState);

3.傳入大數據時需要進行web.config 配置

<configuration>
    <system.web>
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
    </system.web>

  <appSettings>
    <add key="DBappSetting" value="Data Source=(localdb)/Projects;Initial Catalog=SLRiaTest;Integrated Security=True;Connect Timeout=100;Encrypt=False;TrustServerCertificate=False"/>
  </appSettings>
  <connectionStrings>
    <add name="myConnectionString" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\User\Documents\database.mdf;Integrated Security=True;Connect Timeout=30"/>
  </connectionStrings>

    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="">
                    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="false" />
                  <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <bindings>
            <customBinding>
                <binding name="Projects_Manager.Web.ServiceWCF.customBinding0">
                    <binaryMessageEncoding />
                    <httpTransport  maxReceivedMessageSize="2147483647"/>
                </binding>
                <binding name="Projects_Manager.Web.ServiceSQLite.customBinding0">
                    <binaryMessageEncoding />
                    <httpTransport  maxReceivedMessageSize="2147483647"/>
                </binding>
            </customBinding>
        <basicHttpBinding>
    <binding name="basicBinding" maxReceivedMessageSize="2147483647"></binding>
  </basicHttpBinding>
        </bindings>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
            multipleSiteBindingsEnabled="true" />
        <services>
            <service name="Projects_Manager.Web.ServiceSQLite">
                <endpoint address="" binding="customBinding" bindingConfiguration="Projects_Manager.Web.ServiceSQLite.customBinding0"
                    contract="Projects_Manager.Web.ServiceSQLite" />
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            </service>
        </services>
    </system.serviceModel>
</configuration>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章