This is not a good approach to inserting data into a database as it is highly vulnerable, especially to SQL Injection attacks.
However, to get your code to work all of your string need to be within single quotes, which looking at your code appears not to be the case.
If you changed it to:
query.Append("INSERT INTO Suppliers ");
query.Append("(SupName,ConcernedPerson,MobileNum,PostalAddr,Email) ");
query.Append("VALUES('"+txtSupplier.Text.ToString());
query.Append("','"+txtConcerned.Text.ToString());
query.Append("','"+Convert.ToInt64(txtMobile.Text));
query.Append("','"+txtAddress.Text.ToString());
query.Append("','"+txtEmail.Text.ToString()+"');");
Then it should work.
However I would suggest you look at using Parameters.
If you changed your Insert method to have this definition:
public static int Insert(string query, Dictionary<string,> parameters)
Then instead of how you generate your query string you could have:
var insertQuery = @"INSERT INTO Suppliers (SupName, ConcernedPerson, MobileNum, PostalAddr, Email) Values (@name, @concernedPerson, @mobile, @addr, @email)
Then create you parameters dictionary as follows:
var paramDic = new Dictionary<string,>();
paramDic.Add("@name", txtSupplier.Text);
Call your new insert method as
Insert(insertQuery, paramDic)
Then you need to tweak your insert command as follows:
cmd.CommandText = query;
foreach(var p in parameters){
cmd.Parameters.AddWithValue(p.Key, p.Value);
}