SQLite连接数据库帮助类

public class SQLiteDB
    {
        private static readonly string sqliteConn = @"Data Source = {0}";//定义链接字符串

        /// <summary>
        /// 判断数据库是否存在
        /// </summary>
        /// <param name="dbFilePath">数据库文件路径</param>
        /// <returns></returns>
        /// <exception cref="AggregateException"></exception>
        public static bool IsDatabaseExist(string dbFilePath)
        {
            if (string.IsNullOrEmpty(dbFilePath))
            {
                throw new AggregateException(nameof(dbFilePath));
            }
            if (!File.Exists(dbFilePath))
            {
                return false;
            }
            using (var connection = new SQLiteConnection(string.Format(sqliteConn, dbFilePath)))
            {
                try
                {
                    connection.Open();
                    return true;
                }
                catch (Exception)
                {

                    return false;
                }
            }
        }
        /// <summary>
        /// 查询表中数据
        /// </summary>
        /// <param name="dbFilePath">数据库文件路径</param>
        /// <param name="sql">sql语句</param>
        /// <returns></returns>
        /// <exception cref="AggregateException"></exception>
        public static DataTable ExecutQuery(string dbFilePath, string sql)
        {
            if (string.IsNullOrEmpty(dbFilePath))
            {
                throw new AggregateException(nameof(dbFilePath));
            }
            if (string.IsNullOrEmpty(sql))
            {
                throw new AggregateException(nameof(sql));
            }
            using (var connection = new SQLiteConnection(string.Format(sqliteConn, dbFilePath)))//链接数据库
            using (var command = new SQLiteCommand(sql, connection))//用sql语句进行查询
            using (var adapter = new SQLiteDataAdapter(command))//返回查询结果
            {
                try
                {
                    connection.Open();
                    var dataTable = new DataTable();
                    adapter.Fill(dataTable);
                    return dataTable;
                }
                finally
                {
                    connection.Clone();
                }
            }
        }
        /// <summary>
        /// 增删改操作
        /// </summary>
        /// <param name="dbFilePath"></param>
        /// <param name="sql"></param>
        /// <returns></returns>
        /// <exception cref="AggregateException"></exception>
        public static int ExecutNonQuery(string dbFilePath, string sql)
        {
            if (string.IsNullOrEmpty(dbFilePath))
            {
                throw new AggregateException(nameof(dbFilePath));
            }
            if (string.IsNullOrEmpty(sql))
            {
                throw new AggregateException(nameof(sql));
            }
            using (var connection = new SQLiteConnection(string.Format(sqliteConn, dbFilePath)))
            using (var command = new SQLiteCommand(sql, connection))
            {
                try
                {
                    connection.Open();
                    return command.ExecuteNonQuery();
                }
                finally
                {

                    connection.Close();
                }
            }
        }
        /// <summary>
        /// 判断数据库中是否存在该表
        /// </summary>
        /// <param name="dbFilePath"></param>
        /// <param name="tableName"></param>
        /// <param name="tableDefinition"></param>
        /// <exception cref="AggregateException"></exception>
        public static void EnsureTableExist(string dbFilePath, string tableName, string tableDefinition)
        {
            if (!IsDatabaseExist(dbFilePath))
            {
                return;
            }
            if (string.IsNullOrEmpty(tableName))
            {
                throw new AggregateException(nameof(tableName));
            }
            if (string.IsNullOrEmpty(tableDefinition))
            {
                throw new AggregateException(nameof(tableDefinition));
            }

            try
            {
                var sql = $"select count(*) from sqlite_master where type='table' and name ='{tableName}' ";
                int tableNum = (int)Convert.ToInt64(ExecutQuery(dbFilePath, sql).Rows[0][0]);

                if (tableNum > 0)
                {
                    return;
                }
            }
            catch (Exception ex) 
            {
                var createTableSql = $"create table if not exists {tableName}({tableDefinition})";
                ExecutNonQuery(dbFilePath, createTableSql);
            }
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在JavaFX中连接SQLite数据库,你需要首先安SQLite的JDBC驱动将其添加到你的Java项目中。你可以通过在项目的依赖项中添加以下代码来实现这一点: ```xml <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc --> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.41.2.1</version> </dependency> ``` 这样就可以将SQLite的JDBC驱动添加到你的Java项目中。接下来,你可以使用Java代码来连接SQLite数据库。在JavaFX中,你可以使用JDBC API来实现这一点。下面是一个简单的示例代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Main { public static void main(String[] args) { // 设置SQLite数据库连接URL String url = "jdbc:sqlite:/path/to/your/database.db"; try { // 加载SQLite JDBC驱动 Class.forName("org.sqlite.JDBC"); // 建立数据库连接 Connection connection = DriverManager.getConnection(url); // 进行数据库操作 // ... // 关闭数据库连接 connection.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在上面的代码中,你需要将`url`变量的值替换为你的SQLite数据库文件的路径。然后,你可以使用`DriverManager.getConnection()`方法来建立与SQLite数据库连接。接下来,你可以在这个连接上执行各种数据库操作。 请注意,SQLite是单线程的数据库,这意味着只能有一个线程进行写操作,但允许多个线程进行读操作。因此,在与SQLite数据库交互时,你需要特别注意关闭JDBC资源(例如`ResultSet`、`Connection`、`Statement`),以避免出现"database is locked"的错误。 希望这个回答能够帮助到你连接JavaFX与SQLite3数据库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【五一创作】嵌入式Sqlite数据库【基本语法、Sqlite-JDBC、嵌入到Java程序】](https://blog.csdn.net/m0_64261982/article/details/130457720)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值