首页 > 数据库 >C#中的使用本地数据库(SQLCE)

C#中的使用本地数据库(SQLCE)

时间:2024-01-26 09:46:37浏览次数:22  
标签:string C# 数据库 SQLCE try command connect new public

 一般写软件,若用到单机数据库,用的几乎都是Access。其实在VS中,可以使用以sdf为扩展名的本地数据库。(**项目-->添加-->新建项-->本地数据库)

这样的数据库兼具两大优点:第一,可以使用LinqToSql,第二,单机化,不需要其他控件等等。

分享一个用LinqToSql来操作这个数据库的简单类。注意引用System.Data.SqlServerCe。 

  1 using System;
  2 using System.Collections;
  3 using System.Data;
  4 using System.Data.SqlServerCe;
  5 
  6 namespace MyTool.DataBase
  7 {
  8     /// <summary>
  9     /// SQLCE本地数据库操作
 10     /// </summary>
 11   public  class SqlCeHelper
 12     {
 13         #region[字段]
 14         private string connectstring = @"Data Source=|DataDirectory|\Database1.sdf";
 15         SqlCeConnection connect = null;
 16         SqlCeCommand command = null;
 17         #endregion
 18         #region[属性]
 19         /// <summary>
 20         /// 数据库连接字符串
 21         /// </summary>
 22         public string ConnectString
 23         {
 24             get { return connectstring; }
 25             set { connectstring = value; }
 26         }
 27         #endregion
 28         #region[构造函数]
 29         /// <summary>
 30         /// 构造函数
 31         /// </summary>
 32         /// <param name="DBPath">数据库路径</param>
 33         public SqlCeHelper(string DBPath)
 34         {
 35             this.ConnectString = "Data Source=" + DBPath;
 36             connect = new SqlCeConnection(ConnectString);
 37         }       
 38         #endregion
 39         #region[私有函数]
 40         private void Open()
 41         {
 42             try
 43             {
 44                 if (connect.State != System.Data.ConnectionState.Open)
 45                 {
 46                     connect.Open();
 47                 }
 48 
 49             }
 50             catch (Exception ex)
 51             {
 52                 throw (new Exception(ex.Message));
 53             }
 54         }
 55 
 56         private void Close()
 57         {
 58             try
 59             {
 60                 if (connect.State != System.Data.ConnectionState.Closed)
 61                 {
 62                     connect.Close();
 63                 }
 64 
 65             }
 66             catch (Exception ex)
 67             {
 68                 throw (new Exception(ex.Message));
 69             }
 70         }
 71         #endregion
 72      
 73         /// <summary>
 74         /// 测试连通性
 75         /// </summary>
 76         /// <returns></returns>
 77         public bool ConnectTest()
 78         {
 79             try
 80             {
 81                 connect.Open();
 82             }
 83             catch
 84             {
 85                 connect.Close();
 86                 return false;
 87             }
 88             return true;
 89         }
 90 
 91         /// <summary>
 92         /// 执行无返回的Sql语句,如插入,删除,更新,注意异常的抛出
 93         /// </summary>
 94         /// <param name="sqlstr">SQL语句</param>
 95         /// <returns>受影响的条数</returns>
 96         public int ExecuteNonQuery(string sqlstr)
 97         {
 98             try
 99             {
100                 Open();
101                 command = new SqlCeCommand(sqlstr, connect);
102                 int num = command.ExecuteNonQuery();
103                 command.Parameters.Clear();
104                 Close();
105                 return num;
106             }
107             catch
108             {
109                 throw;
110             }
111 
112         }
113 
114         /// <summary>
115         /// 执行查询语句,返回DataSet
116         /// </summary>
117         /// <param name="sqlstr">Sql</param>
118         /// <returns>DataSet数据集</returns>
119         public DataSet ReturnDataSet(string sqlstr)
120         {
121             DataSet ds = new DataSet();
122             try
123             {
124                 Open();
125                 SqlCeDataAdapter adapter = new SqlCeDataAdapter(sqlstr, connect);
126                 adapter.Fill(ds, "Obj");
127             }
128             catch
129             {
130                 throw;
131             }
132             return ds;
133         }
134 
135         /// <summary>
136         /// 执行查询语句,返回DataTable。注意异常的抛出
137         /// </summary>
138         /// <param name="sqlstr">Sqk</param>
139         /// <returns>DataTable数据表</returns>
140         public DataTable ReturnDataTable(string sqlstr)
141         {
142             try
143             {
144                 return ReturnDataSet(sqlstr).Tables[0];
145             }
146             catch
147             { throw; }
148         }
149 
150         /// <summary>
151         /// 执行查询语句,返回DataReader
152         /// </summary>
153         /// <param name="sqlstr">Sql</param>
154         /// <returns>DataReader</returns>
155         public SqlCeDataReader ReturnDataReader(string sqlstr)
156         {
157 
158             try
159             {
160                 Open();
161                 command = new SqlCeCommand(sqlstr, connect);
162                 SqlCeDataReader myReader = command.ExecuteReader();
163                 command.Parameters.Clear();
164                 Close();
165                 return myReader;
166             }
167             catch
168             {
169                 throw;
170             }
171 
172         }
173 
174         /// <summary>
175         /// 执行事务
176         /// </summary>
177         /// <param name="SQLStringList"></param>
178         public void ExecuteSqlTran(ArrayList SQLStringList)
179         {
180 
181             Open();
182             command = new SqlCeCommand();
183             command.Connection = connect;
184             SqlCeTransaction tx = connect.BeginTransaction();
185             command.Transaction = tx;
186             try
187             {
188                 for (int n = 0; n < SQLStringList.Count; n++)
189                 {
190                     string strsql = SQLStringList[n].ToString();
191                     if (strsql.Trim().Length > 1)
192                     {
193                         command.CommandText = strsql;
194                         command.ExecuteNonQuery();
195                     }
196                 }
197                 tx.Commit();
198             }
199             catch (Exception)
200             {
201                 tx.Rollback();
202                 throw;
203             }
204         }
205     }
206 }

 

标签:string,C#,数据库,SQLCE,try,command,connect,new,public
From: https://www.cnblogs.com/soliang/p/17988642

相关文章

  • ARC127D Sum of Min of Xor
    ARC127DSumofMinofXor性质分析加通用套路。思路首先我们把这题的\(\min\)给去掉,那么我们按位算贡献,可以求出和。这是这种式子的通用套路。考虑加上\(\min\),那么我们先按照\((a_i,b_i)\)的最高位分为:\((1,0)\),\((0,1)\),\((1,1)\),\((0,0)\)四种情况。可以发现用贡献......
  • 使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv
    使用命令行方式搭建uni-app+Vue3+Typescript+Pinia+Vite+TailwindCSS+uv-ui开发脚手架项目代码以上传至码云,项目地址:gitee.com/breezefaith…目录一、前言近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台......
  • 修改vSphere ESXi中虚拟机的三大件CPUID,硬盘ID,MAC地址
    1、查看硬件信息 wmicdiskdrivegetserialnumber查看磁盘序列号wmicbiosgetserialnumber查询BIOS序列号wmicnicconfiggetmacaddress查询网卡MAC信息wmiccpugetprocessorid查询cpu的IDwmicbeseboardgetserialnumber查询主板序列号 2、修改CPUID......
  • Kubectl使用
     #检查Deployment的历史版本kubectlrollouthistorydeployment/sscpabm#查看revision(版本)的详细信息kubectlrollouthistorydeployment/sscpabmn--revision=2#将当前版本回滚到前一个版本kubectlrolloutundodeployment/sscpabm#使用--to-revision选项回......
  • Installing Cassandra on Windows
    *[ApacheCassandra|ApacheCassandraDocumentation](https://cassandra.apache.org/_/download.html) *[InstallingCassandraonWindows](https://docs.nomagic.com/display/TWCloud2022x/Installing+Cassandra+on+Windows#:~:text=Cassandra%20is%20not%20supporte......
  • element select多选 选择一条数据后自动隐藏下拉选框
    <el-selectv-model="form.roleIds"placeholder="请选择角色"multiplemultiple-limit="1"@change="handleVisibleChange"ref......
  • Func<T, object> 选择器使用
    感觉有点类似于委托,在一开始先绑定,到后面使用LINQ语句时再触发(不知道是不是这样,先记录一下) publicstaticvoidMain(){List<int>numbers=newList<int>(){10,20,30,40,50};//创建一个Func<T,object>来获取大于20的元素......
  • MySQL数据库优化的八种方式(经典必看)
    MySQL数据库优化的八种方式(经典必看)引言:关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,积累优质文章,提升个人能力,希望对大家今后开发中也有帮助1、......
  • [转帖]Oracle replay工具用法
    一、简介Oracle11g推出的神器,可以抓取生产环境真实负载(sql语句),在目标环境重演,进行对比。在核心生产环境迁移等重大变更前,尽量确定变更带来的影响。核心步骤包括:准备工作、捕获负载、预处理负载、重演负载、对比分析,每步又包含多个子步骤,下面通过测试案例来看。二、准备......
  • Vue中JSON文件神奇应用fetch、axios异步加载与模块导入全指南
     在Vue中使用JSON文件有多种方式,包括使用fetch方法加载JSON文件、使用axios库加载JSON文件,以及将JSON文件导入为模块。以下是详细描述和相应的示例代码:1.使用fetch方法加载JSON文件:步骤:创建一个JSON文件,例如 data.json://data.json{"name":"John","age":......