Mostly, you left out the apostrophes to surround the string values.
The best solution to this is to use a parameterized statement.
CopyImage(FileName);
string q2 = "INSERT INTO Persons (CatID,FullName,Rating,BackGround,GeneralDetale,ImportantDetale,PicName) VALUES ( @catID , @FullName , @Rating , @back , @txtgenerel , @important , @imgnumber)";
SQLiteCommand cmd1 = new SQLiteCommand(q2, cn);
cmd1.Parameters.AddWithValue ( "@CatID" , CatID ) ;
cn.Open();
cmd1.ExecuteNonQuery();
cn.Close();