刷新Oracle表 [英] Refresh Oracle table

查看:230
本文介绍了刷新Oracle表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用下面的代码,我添加了列:

 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆