You can add columns, but it's complicated - not in the actual code, it's an SQL ALTER TABLE command: SQL ALTER TABLE Statement
] - the problem is with existing data in the table.
If you have 18 columns, and you add a 19th, what value should go into that column for existing rows? You could give the new table the NULL attribute, in which case existing rows will get NULL values, but if you do that you will still have to deal with those nulls in your presentation software later. And ... if your table has a significant number of rows this could be extremely inefficient, as SQL has to create a whole new table and copy existing data into it before removing the old table.
My personal feeling is that you are doing something wrong: I'd be included to ask myself "why is this device giving me a different number of rows?", "when the row count changes, does the row order?", "will this mean that existing data is no longer in the right column?", and "what happens if the device decides to send me less columns?"
All of these could have profound results on your code reliability and data integrity later - and once you get data integrity problems, they are a nightmare to fix!