sqlite helper
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了sqlite helper,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5215字,纯文字阅读大概需要8分钟。
内容图文
--------------------------------------------------------------------------
//
// Copyright (c) BUSHUOSX. All rights reserved.
//
// File: SqliteDbManager.cs
//
// Version:1.0.0.0
//
// Datetime:
//
//---------------------------------------------------------------------------
/*
*
* 修改时间:20140829 211000
*
*
*
*
*/
using System;
using System.Configuration;
using System.Data.SQLite;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
namespace BUSHUOSX.Helper
{
public sealed class SqliteDbManager
{
/// <summary>
/// 获取连接字符串中某项的值
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="itemName">项目</param>
/// <returns>项目值</returns>
private static string GetItemValueFromConnectionString(
string connectionString,
string itemName)
{
if (!connectionString.EndsWith(
";"))
connectionString +=
";";
// \s* 匹配0个或多个空白字符
// .*? 匹配0个或多个除 "\n" 之外的任何字符(?指尽可能少重复)
string regexStr = itemName +
@"\s*=\s*(?<key>.*?);";
Regex r =
new Regex(regexStr, RegexOptions.IgnoreCase);
Match mc =
r.Match(connectionString);
return mc.Groups[
"key"].Value;
}
/// <summary>
/// 创建System.Data.Sqlite数据库样式的连接字符串
/// </summary>
/// <param name="dbName">数据库名</param>
/// <param name="dbFileExtName">数据库文件扩展名</param>
/// <param name="dbPassword">数据库密码</param>
/// <param name="dbDirectory">数据库目录路径</param>
/// <returns>dbName为空时,返回空</returns>
public static string GenerateSqliteConnectionString(
string dbFileName,
string dbPassword =
"",
string dbDirectory =
"")
{
if (
string.IsNullOrEmpty(dbFileName))
{
return "";
}
StringBuilder sb =
new StringBuilder(
"Data Source=");
if (!
string.IsNullOrEmpty(dbDirectory))
{
sb.Append(dbDirectory);
if (!dbDirectory.EndsWith(
"\\"))
sb.Append(‘\\‘);
}
sb.Append(dbFileName).Append(‘;‘);
if (!
string.IsNullOrEmpty(dbPassword))
sb.AppendFormat("Password={0};", dbPassword);
return sb.ToString();
}
/// <summary>
/// 尝试用sqliteConnectionString打开已存在的数据库,或者用sqliteConnectionString创建新的数据库
/// </summary>
/// <param name="dbFileName"></param>
/// <param name="dbPassword"></param>
/// <returns></returns>
public static bool OpenOrCreateSqliteDateBase(
string dbFileName,
string dbPassword)
{
return OpenOrCreateSqliteDateBase(GenerateSqliteConnectionString(dbFileName, dbPassword));
}
/// <summary>
/// 尝试用sqliteConnectionString打开已存在的数据库,或者用sqliteConnectionString创建新的数据库
/// </summary>
/// <param name="sqliteConnectionString"></param>
/// <returns></returns>
public static bool OpenOrCreateSqliteDateBase(
string sqliteConnectionString)
{
string dbFileName = GetItemValueFromConnectionString(sqliteConnectionString,
"Data Source");
string dbPassword = GetItemValueFromConnectionString(sqliteConnectionString,
"Password");
if (
string.IsNullOrEmpty(dbFileName))
{
return false;
}
try
{
if (!
File.Exists(dbFileName))
{
//创建目录
var parent =
Directory.GetParent(dbFileName);
if (
null != parent && !
parent.Exists)
{
Directory.CreateDirectory(parent.FullName);
}
//var fs = File.Create(dbName);
//fs.Close();
//创建数据库
SQLiteConnection sqlconn =
new SQLiteConnection(
"Data Source=" +
dbFileName);
sqlconn.Open();
//设置密码
if (!
string.IsNullOrEmpty(dbPassword))
sqlconn.ChangePassword(dbPassword);
sqlconn.Close();
return true;
}
}
catch (SQLiteException e)
{
return false;
}
catch (Exception e)
{
return false;
}
try
{
//尝试打开数据库
SQLiteConnection sqlconn =
new SQLiteConnection(sqliteConnectionString);
sqlconn.Open();
sqlconn.Close();
}
catch (SQLiteException e)
{
return false;
}
return true;
}
public static bool TableExists(
string sqliteConnectionString,
string tableName)
{
bool result =
false;
SQLiteConnection sqlconn =
new SQLiteConnection(sqliteConnectionString);
try
{
SQLiteCommand scmd =
new SQLiteCommand(sqlconn);
scmd.CommandText =
string.Format(
@"select count(*) from sqlite_master where type=‘table‘ and name=‘{0}‘", tableName);
//打开数据库
sqlconn.Open();
var v =
scmd.ExecuteScalar();
if (
1 ==
Convert.ToInt32(v))
{
result =
true;
}
}
catch (Exception)
{
//throw;
}
sqlconn.Close();
return result;
}
public static bool DropTable(
string sqliteConnectionString,
string tableName)
{
return null != ExecuteNonQuery(sqliteConnectionString,
string.Format(
"drop table if exists {0}", tableName));
}
public static bool RenameTable(
string sqliteConnectionString,
string oldTableName,
string newTableName)
{
return null != ExecuteNonQuery(sqliteConnectionString,
string.Format(
"alter table {0} rename to {1}", oldTableName, newTableName));
}
/// <summary>
/// 执行sql命令
/// </summary>
/// <param name="sqliteConnectionString"></param>
/// <param name="sql"></param>
/// <returns></returns>
public static object ExecuteNonQuery(
string sqliteConnectionString,
string sql)
{
object result =
null;
SQLiteConnection sqlconn =
new SQLiteConnection(sqliteConnectionString);
try
{
//打开数据库
sqlconn.Open();
SQLiteCommand scmd =
new SQLiteCommand(sqlconn);
scmd.CommandText =
sql;
result =
scmd.ExecuteNonQuery();
}
catch (Exception e)
{
//throw;
}
sqlconn.Close();
return result;
}
}
}
sqlite helper
标签:public option with app .exe bool 连接字符串 reserve scala
本文系统来源:http://www.cnblogs.com/bushuosx/p/7343007.html
内容总结
以上是互联网集市为您收集整理的sqlite helper全部内容,希望文章能够帮你解决sqlite helper所遇到的程序开发问题。
如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
来源:【匿名】