I revised the code as below:
public void AlterTable_AddColumn(OracleConnection connection, DataTable tbl, string colName) {
DataColumnCollection columns = tbl.Columns;
if (!columns.Contains(colName)) {
string s = "Alter table " + tbl.TableName.ToUpper() + " Add ( " + colName + " VARCHAR2(500) ) ";
using (OracleCommand cmd = new OracleCommand(s, connection)) {
cmd.ExecuteNonQuery();
}
tbl.Columns.Add(colName, typeof(string));
tbl.ColumnChanged += new DataColumnChangeEventHandler(Column_Changed);
tbl.AcceptChanges();
}
connection.Close();
}
private static void Column_Changed(object sender, DataColumnChangeEventArgs e) {
}
Then, the bug is solved. However, I actually did on both Oracle's insert and datatable update. I know it somehow redundant. If you have a betgter idea, please share. Thanks.