刷新Oracle表 [英] Refresh Oracle table
问题描述
使用下面的代码,我添加了列:
public void AlterTable_AddColumn(OracleConnection连接,字符串tblName,字符串colName){
DataTable table = GetOracleDataTable(connection ,select * from,tblName);
DataColumnCollection columns = table.Columns;
if(!columns.Contains(colName)){
string s =Alter table+ tblName.ToUpper()+Add(+ colName +VARCHAR2(500)) ;
使用(OracleCommand cmd = new OracleCommand(s,connection)){
cmd.ExecuteNonQuery();
}
}
connection.Close();
}
添加1个新列(此处称为Column1)后,代码重复添加另一列(Column2)。在这一步中,我查看了变量:列,其中列出了除刚刚添加的Column1之外的所有列名。为了刷新包含所有更新的列/行信息的表,如何刷新表?在这段代码中,我在插入新列后加载了数据表(请参阅DataTable table = ...)。我也尝试了connection.Close()然后连接.Open(),但没有效果。很高兴听取您的解决方案的建议。谢谢。
我修改了以下代码:
public void AlterTable_AddColumn(OracleConnection连接,DataTable tbl, string colName){
// DataTable table = GetOracleDataTable(connection,select * from,tblName);
DataColumnCollection columns = tbl.Columns; // table.Columns;
if (!columns.Contains(colName)){
string s = 更改表 + tbl.TableName.ToUpper()+ 添加( + colName + VARCHAR2(500));
使用(OracleCommand cmd = new OracleCommand(s,connection)){
cmd.ExecuteNonQuery();
// System.Windows.Forms.MessageBox.Show(table changed);
}
tbl.Columns.Add(colName, typeof ( string )) ;
tbl.ColumnChanged + = new DataColumnChangeEventHandler(Column_Changed);
tbl.AcceptChanges();
}
connection.Close();
}
私有 静态 void Column_Changed( object sender,DataColumnChangeEventArgs e){
} // 无用
然后,错误就解决了。但是,我实际上对Oracle的insert和datatable更新都做了。我知道这有点多余。如果您有更好的想法,请分享。感谢。
Using the code below, I add columns:
public void AlterTable_AddColumn(OracleConnection connection, string tblName, string colName) { DataTable table = GetOracleDataTable(connection, "select * from ", tblName); DataColumnCollection columns = table.Columns; if (!columns.Contains(colName)) { string s = "Alter table " + tblName.ToUpper() + " Add ( " + colName + " VARCHAR2(500) ) "; using (OracleCommand cmd = new OracleCommand(s, connection)) { cmd.ExecuteNonQuery(); } } connection.Close(); }
After adding 1 new column (termed Column1 here), the code iterated for adding another column (Column2). In this step, I viewed variable: columns, which listed all of the column names except for Column1 that was just added. In order to refresh the table with all of the updated columns/rows information, how can the table be refreshed? In this piece of code, I erloaded the datatable after inserting a new column (see DataTable table = ...). I also tried connection.Close() and then connection.Open(), but not effective. Will be glad to listen to your advisory for the solution. Thanks.
I revised the code as below:
public void AlterTable_AddColumn(OracleConnection connection, DataTable tbl, string colName) { //DataTable table = GetOracleDataTable(connection, "select * from ", tblName); DataColumnCollection columns = tbl.Columns; // table.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(); //System.Windows.Forms.MessageBox.Show("Table altered"); } 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) { } // useless
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.
这篇关于刷新Oracle表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!