VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之SQLite使用笔记(2)

233 //conn.Open(); 234 //cmd.CommandText = sql; 235 //if (parameters.Length != 0) 236 //{ 237 // cmd.Parameters.AddRange(parameters); 238 //} 239 return cmd.ExecuteScalar(); 240 } 241 catch (Exception) { throw; } 242 } 243 } 244 } 245 #endregion 查询 返回第一个 246 247 #region 查询 返回DT 248 /// <summary> 249 /// 执行一个查询语句,返回一个包含查询结果的DataTable。 250 /// </summary> 251 /// <param name="sql">要执行的查询语句。</param> 252 /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param> 253 /// <returns></returns> 254 /// <exception cref="Exception"></exception> 255 public static DataTable ExecuteQuery(string sql, params SQLiteParameter[] parameters) 256 { 257 using (SQLiteConnection connection = new SQLiteConnection(connectionString)) 258 { 259 using (SQLiteCommand command = new SQLiteCommand(sql, connection)) 260 { 261 PrepareCommand(connection, command, sql, parameters); 262 //if (parameters != null) 263 //{ 264 // if (parameters.Length != 0) 265 // { 266 // command.Parameters.AddRange(parameters); 267 // } 268 //} 269 270 SQLiteDataAdapter adapter = new SQLiteDataAdapter(command); 271 DataTable data = new DataTable(); 272 try { adapter.Fill(data); } 273 catch (Exception) { throw; } 274 return data; 275 } 276 } 277 } 278 #endregion 查询 返回DT 279 280 #region 查询 返回SQLiteDataReader 281 /// <summary> 282 /// 执行一个查询语句,返回一个关联的SQLiteDataReader实例。 283 /// </summary> 284 /// <param name="sql">要执行的查询语句。</param> 285 /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param> 286 /// <returns></returns> 287 /// <exception cref="Exception"></exception> 288 public static SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] parameters) 289 { 290 SQLiteConnection connection = new SQLiteConnection(connectionString); 291 SQLiteCommand command = new SQLiteCommand(sql, connection); 292 try 293 { 294 PrepareCommand(connection, command, sql, parameters); 295 //if (parameters.Length != 0) 296 //{ 297 // command.Parameters.AddRange(parameters); 298 //} 299 //connection.Open(); 300 return command.ExecuteReader(CommandBehavior.CloseConnection); 301 } 302 catch (Exception) { throw; } 303 } 304 #endregion 查询 返回SQLiteDataReader 305 306 #region 查询数据库中的所有数据类型信息 307 /// <summary> 308 /// 查询数据库中的所有数据类型信息。 309 /// </summary> 310 /// <returns></returns> 311 /// <exception cref="Exception"></exception> 312 public static DataTable GetSchema() 313 { 314 using (SQLiteConnection connection = new SQLiteConnection(connectionString)) 315 { 316 try 317 { 318 connection.Open(); 319 return connection.GetSchema("TABLES"); 320 } 321 catch (Exception) { throw; } 322 } 323 } 324 325 #endregion 查询数据库中的所有数据类型信息 326 327 #region 判断表是否存在 328 public static bool IsTableExist(string tableName) 329 { 330 bool isTableExist = true; 331 using (SQLiteConnection connection = new SQLiteConnection(connectionString)) 332 { 333 string sql = "SELECT name FROM sqlite_master WHERE type='table' AND name = '"; 334 sql += tableName; 335 sql += "'"; 336 using (SQLiteCommand command = new SQLiteCommand(sql, connection)) 337 { 338 PrepareCommand(connection, command, sql, null); 339 int count = command.ExecuteNonQuery(); 340 if (count <= 0) isTableExist = false; 341 } 342 } 343 return isTableExist; 344 345 } 346 #endregion 判断表是否存在 347 348 #endregion 数据库操作 349 350 #region 整理数据库 351 /// <summary> 352 /// 重新组织数据库 353 /// SQLite 的自带命令 VACUUM。用来重新整理整个数据库达到紧凑之用,比如把删除的彻底删掉等等 354 /// </summary> 355 public static void ResetDataBass() 356 { 357 using (SQLiteConnection conn = new SQLiteConnection(connectionString)) 358 { 359 var cmd = new SQLiteCommand(); 360 361 if (conn.State != ConnectionState.Open) 362 conn.Open(); 363 cmd.Parameters.Clear(); 364 cmd.Connection = conn; 365 cmd.CommandText = "vacuum"; 366 cmd.CommandType = CommandType.Text; 367 cmd.CommandTimeout = 30; 368 cmd.ExecuteNonQuery(); 369 } 370 } 371 #endregion 整理数据库 372 }
复制代码

可视化工具

分享一个可视化工具,个人感觉非常好用:

SQLiteStudio :http://sqlitestudio.pl/

 

问题

 在项目中使用,不可能是直接在客户端的项目中直接写ADO那套,一般都会封装SQLite调用层,在调用层中添加相关的引用,这样就会有一个问题,客户端项目直接调用,会报一个错误:

解决方法为:
在客户端项目中添加两个文件夹,内部添加SQLite.Interop.dll(从SQLite调用层的Debug中拷贝)

然后,右键两个dll,选择属性,更改输出目录为始终复制。

问题解决。

 

总结

SQLite在本地存储方面使用非常广泛,不得不说真的很好用。


相关教程
关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号