public bool AddFrameData(HandShapeModel hand)
{
currentFrame++;
if (!Begin || hand == null)
{
return false;
}
try
{
SQLiteCommand insertCommand = new SQLiteCommand(connection);
string insertframe =
String.Format("INSERT OR REPLACE INTO FrameData (" +
"SampleIndex,FrameNumber," +
"SkeletonHeadX, SkeletonHeadY, SkeletonHeadZ, " +
"SkeletonShoulderCenterX, SkeletonShoulderCenterY, SkeletonShoulderCenterZ, " +
"SkeletonShoulderLeftX, SkeletonShoulderLeftY, SkeletonShoulderLeftZ, " +
"SkeletonShoulderRightX, SkeletonShoulderRightY, SkeletonShoulderRightZ, " +
"SkeletonSpineX, SkeletonSpineY, SkeletonSpineZ, " +
"SkeletonHipCenterX, SkeletonHipCenterY, SkeletonHipCenterZ, " +
"SkeletonHipLeftX, SkeletonHipLeftY, SkeletonHipLeftZ, " +
"SkeletonHipRightX, SkeletonHipRightY, SkeletonHipRightZ, " +
"SkeletonElbowLeftX, SkeletonElbowLeftY, SkeletonElbowLeftZ, " +
"SkeletonWristLeftX, SkeletonWristLeftY, SkeletonWristLeftZ, " +
"SkeletonHandLeftX, SkeletonHandLeftY, SkeletonHandLeftZ, " +
"SkeletonElbowRightX, SkeletonElbowRightY, SkeletonElbowRightZ, " +
"SkeletonWristRightX, SkeletonWristRightY, SkeletonWristRightZ, " +
"SkeletonHandRightX, SkeletonHandRightY, SkeletonHandRightZ, " +
"RightHandHOG, LeftHandHOG) VALUES" +
"(@SampleID, @Frame" +
"{0},@Right,@Left)", hand.skeletonData);
insertCommand = new SQLiteCommand(insertframe, connection);
insertCommand.Parameters.AddWithValue("@SampleID", CurrentSign);
insertCommand.Parameters.AddWithValue("@Frame", currentFrame);
if (hand.hogRight == null || hand.hogRight.Length == 0)
{
insertCommand.Parameters.AddWithValue("@Right", null);
}
else
{
insertCommand.Parameters.Add("@Right", DbType.Binary, hand.hogRight.Length * sizeof(float)).Value = hand.hogRight.ToByteArray();
}
if (hand.hogLeft == null || hand.hogLeft.Length == 0)
{
insertCommand.Parameters.AddWithValue("@Left", null);
}
else
{
insertCommand.Parameters.Add("@Left", DbType.Binary, hand.hogLeft.Length * sizeof(float)).Value = hand.hogLeft.ToByteArray();
}
insertCommand.ExecuteNonQuery();
string sql = @"select last_insert_rowid()";
insertCommand.CommandText = sql;
long lastId = (long)insertCommand.ExecuteScalar();
hand.frame = lastId;
// update sign type
if (hand.type == HandEnum.Intersect)
{
string update = @"UPDATE signsample
set intersected = 1
where index_id = @ID ";
SQLiteCommand updateCommand = new SQLiteCommand(update, connection);
updateCommand.Parameters.AddWithValue("@ID", CurrentSign);
//Console.WriteLine(updateCommand.CommandText);
updateCommand.ExecuteNonQuery();
}
return true;
}
catch (Exception e)
{
tran.Rollback();
return false;
}
}