A couple of things:
string sid = txtSID.Text.ToString();
What is this going to do? The Text property is a string already - using ToString is going to do nothing except waste time and memory!
string strSQL = "INSERT INTO DBSERVERS(SID) VALUES(" + txtSID.Text + ")";
Why did you not use the "sid" you prepared in the line above? It makes no difference, but still...
string strSQL = "INSERT INTO DBSERVERS(SID) VALUES(" + txtSID.Text + ")";
Never do this!
Two reasons:
1) You lay yourself wide open to an SQL Injection attack - Google "Bobby Tables" to find out what I mean.
2) It is probably causing your problem, because the content of =your text box is being passed as part of the SQL command.
Instead, use:
string strSQL = "INSERT INTO DBSERVERS(SID) VALUES(@ID)";
OracleCommand cmd =new OracleCommand(strSQL,connection);
cmd.Parameters.AddWithValue("@ID", sid);
cmd.ExecuteNonQuery();
This way, the content of the textbox is passed in verbatim and cannot be treated as a command.