public bool InsertDataSet(DBDataSet dataSet)
        {
            using (SqliteConnection db = new SqliteConnection(m_DBConnectName))
            {
                try
                {
                    db.Open();

                    SqliteCommand insertCommand = new SqliteCommand();
                    insertCommand.Connection = db;

                    // Use parameterized query to prevent SQL injection attacks
                    insertCommand.CommandText = "INSERT OR IGNORE INTO FingerIdTbl VALUES (@FingerID, @SensorId,  @SecondName, @FirstName, @FingerTemplate, @AccessRights, @MatchScore, @CreationTime, @Info);";
                    insertCommand.Parameters.AddWithValue("@FingerID", dataSet.FingerID);
                    insertCommand.Parameters.AddWithValue("@SensorId", dataSet.SensorId);

                    insertCommand.Parameters.AddWithValue("@SecondName", dataSet.SecondName);
                    insertCommand.Parameters.AddWithValue("@FirstName", dataSet.FirstName);


                    insertCommand.Parameters.AddWithValue("@FingerTemplate", dataSet.FingerTemplate);

                    insertCommand.Parameters.AddWithValue("@AccessRights", dataSet.AccessRights);

                    insertCommand.Parameters.AddWithValue("@MatchScore", dataSet.MatchScore);

                    dataSet.CreationTime = DateTime.Now;

                    insertCommand.Parameters.AddWithValue("@CreationTime", dataSet.CreationTime.Ticks);

                    insertCommand.Parameters.AddWithValue("@Info", dataSet.Info);

                    insertCommand.ExecuteReader();
                    db.Close();
                    return(true);
                }
                catch (SqliteException)
                {
                    db.Close();
                    //Handle error
                    return(false);
                }
            }
        }
        public bool UpdateDataSet(DBDataSet dataSet)
        {
            using (SqliteConnection db = new SqliteConnection(m_DBConnectName))
            {
                try
                {
                    db.Open();
                    SqliteCommand insertCommand = new SqliteCommand();
                    insertCommand.Connection = db;

                    // Use parameterized query to prevent SQL injection attacks
                    insertCommand.CommandText = "UPDATE FingerIdTbl SET SecondName = @SecondName, FirstName = @FirstName, SensorId = @SensorId, AccessRights = @AccessRights, MatchScore = @MatchScore, CreationTime = @CreationTime, Info = @Info WHERE FingerID = @FingerID;";
                    insertCommand.Parameters.AddWithValue("@FingerID", dataSet.FingerID);
                    insertCommand.Parameters.AddWithValue("@AccessRights", dataSet.AccessRights);
                    insertCommand.Parameters.AddWithValue("@FirstName", dataSet.FirstName);
                    insertCommand.Parameters.AddWithValue("@SecondName", dataSet.SecondName);

                    insertCommand.Parameters.AddWithValue("@MatchScore", dataSet.MatchScore);
                    insertCommand.Parameters.AddWithValue("@SensorId", dataSet.SensorId);

                    dataSet.CreationTime = DateTime.Now;
                    insertCommand.Parameters.AddWithValue("@CreationTime", dataSet.CreationTime.Ticks);

                    insertCommand.Parameters.AddWithValue("@Info", dataSet.Info);
                    insertCommand.ExecuteReader();
                    db.Close();
                    return(true);
                }
                catch (SqliteException e)
                {
                    db.Close();
                    //Do nothing
                    return(false);
                }
            }
        }
        public bool GetDataSetByFingerId(int fingerId, DBDataSet fingerSet)
        {
            bool ret = false;

            using (SqliteConnection db = new SqliteConnection(m_DBConnectName))
            {
                try
                {
                    SqliteDataReader query;
                    db.Open();
                    SqliteCommand selectCommand = new SqliteCommand("SELECT * from FingerIdTbl WHERE FingerID = @FingerId", db);
                    selectCommand.Parameters.AddWithValue("@FingerId", fingerId);
                    query = selectCommand.ExecuteReader();
                    while (query.Read())
                    {
                        if (query.FieldCount > 0)
                        {
                            fingerSet.FingerID = query.GetInt32(0);
                        }

                        if (query.FieldCount > 1)
                        {
                            byte[] buffer = new byte[32];
                            query.GetBytes(1, 0, buffer, 0, buffer.Length);
                            fingerSet.SensorId = buffer;
                        }


                        if (query.FieldCount > 2)
                        {
                            fingerSet.SecondName = query.GetString(2);
                        }

                        if (query.FieldCount > 3)
                        {
                            fingerSet.FirstName = query.GetString(3);
                        }

                        if (query.FieldCount > 4)
                        {
                            byte[] buffer = new byte[512];
                            query.GetBytes(4, 0, buffer, 0, buffer.Length);
                            fingerSet.FingerTemplate = buffer;
                        }

                        if (query.FieldCount > 5)
                        {
                            fingerSet.AccessRights = (ulong)query.GetInt64(5);
                        }

                        if (query.FieldCount > 6)
                        {
                            fingerSet.MatchScore = query.GetInt32(6);
                        }
                        if (query.FieldCount > 7)
                        {
                            long timeTicks;
                            timeTicks = query.GetInt64(7);
                            fingerSet.CreationTime = new DateTime(timeTicks);
                        }

                        if (query.FieldCount > 8)
                        {
                            fingerSet.Info = query.GetString(8);
                        }


                        ret = true;
                        break;
                    }
                    db.Close();
                    return(true);
                }
                catch (SqliteException)
                {
                    //Handle error
                    db.Close();
                    return(false);
                }
            }
        }