Пример #1
0
        /// <summary>
        /// Add a track to the database
        /// </summary>
        /// <param name="audioFeature">the audiofeature object</param>
        /// <returns>-1 if failed otherwise the track-id passed</returns>
        public int AddTrack(AudioFeature audioFeature)
        {
            IDbDataParameter dbAudioFeatureParam = new SQLiteParameter("@audioFeature", DbType.Binary);
            IDbDataParameter dbNameParam         = new SQLiteParameter("@name", DbType.String);
            IDbDataParameter dbDurationParam     = new SQLiteParameter("@duration", DbType.Int64);
            IDbDataParameter dbBitStringParam    = new SQLiteParameter("@bitstring", DbType.String);

            IDbCommand dbcmd;

            lock (dbcon) {
                dbcmd = dbcon.CreateCommand();
            }
            dbcmd.CommandText = "INSERT INTO mirage (audioFeature, name, duration, bitstring) " +
                                "VALUES (@audioFeature, @name, @duration, @bitstring); SELECT last_insert_rowid();";

            dbcmd.Parameters.Add(dbAudioFeatureParam);
            dbcmd.Parameters.Add(dbNameParam);
            dbcmd.Parameters.Add(dbDurationParam);
            dbcmd.Parameters.Add(dbBitStringParam);

            dbAudioFeatureParam.Value = audioFeature.ToBytes();
            dbNameParam.Value         = audioFeature.Name;
            dbDurationParam.Value     = audioFeature.Duration;
            dbBitStringParam.Value    = audioFeature.BitString;

            int trackid = -1;

            try {
                dbcmd.Prepare();
                //dbcmd.ExecuteNonQuery();
                trackid = Convert.ToInt32(dbcmd.ExecuteScalar());
                dbcmd.Dispose();
            } catch (Exception) {
                return(-1);
            }
            return(trackid);
        }
Пример #2
0
        /// <summary>
        /// Add a track to the database using the given track-id
        /// </summary>
        /// <param name="trackid">track-id to use</param>
        /// <param name="audioFeature">the audiofeature object</param>
        /// <returns>-1 if failed otherwise the track-id passed</returns>
        public int AddTrack(ref int trackid, AudioFeature audioFeature)
        {
            IDbDataParameter dbTrackIdParam      = new SQLiteParameter("@trackid", DbType.Int64);
            IDbDataParameter dbAudioFeatureParam = new SQLiteParameter("@audioFeature", DbType.Binary);
            IDbDataParameter dbNameParam         = new SQLiteParameter("@name", DbType.String);
            IDbDataParameter dbDurationParam     = new SQLiteParameter("@duration", DbType.Int64);
            IDbDataParameter dbBitStringParam    = new SQLiteParameter("@bitstring", DbType.String);

            dbTrackIdParam.Value      = trackid;
            dbAudioFeatureParam.Value = audioFeature.ToBytes();
            dbNameParam.Value         = audioFeature.Name;
            dbDurationParam.Value     = audioFeature.Duration;
            dbBitStringParam.Value    = audioFeature.BitString;

            IDbCommand dbcmd;

            lock (dbcon) {
                dbcmd = dbcon.CreateCommand();
            }
            dbcmd.CommandText = "INSERT INTO mirage (trackid, audioFeature, name, duration, bitstring) " +
                                "VALUES (@trackid, @audioFeature, @name, @duration, @bitstring)";
            dbcmd.Parameters.Add(dbTrackIdParam);
            dbcmd.Parameters.Add(dbAudioFeatureParam);
            dbcmd.Parameters.Add(dbNameParam);
            dbcmd.Parameters.Add(dbDurationParam);
            dbcmd.Parameters.Add(dbBitStringParam);

            try {
                dbcmd.ExecuteNonQuery();
            } catch (SQLiteException) {
                return(-1);
            }

            //trackid++;
            return(trackid);
        }