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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值