我的全局类:
class Global
{
public static OleDbDataAdapter adapter;
public static DataTable dt;
}
我用来填充 DataGridView
的步骤:
OleDbConnection connection;
OleDbCommandBuilder builder;
void gridfill()
{
connection = new OleDbConnection("Provider=MSDAORA;Data Source=XXX;"
+ "user id=XXX;password=XXX;"
+ "persist security info=false;");
Global.adapter = new OleDbDataAdapter("select \"Id\", \"UserComputer\", \"GuralID\", \"Type\", \"CreatedOn\", \"State\" from COMPUTERS", connection);
builder = new OleDbCommandBuilder(Global.adapter);
Global.dt = new DataTable();
Global.adapter.Fill(Global.dt);
dataGridView1.DataSource = Global.dt;
dataGridView1.ReadOnly = true;
}
我正在使用的方法是更新Oracle数据库中一行中的字段:
private void button1_Click(object sender, EventArgs e)
{
try
{
if (comboBox1.Text == "New")
{
Global.dt.Rows[rowId]["State"] = 0;
}
else if (comboBox1.Text == "Old")
{
Global.dt.Rows[rowId]["State"] = 1;
}
else if (comboBox1.Text == "Junk")
{
Global.dt.Rows[rowId]["State"] = 2;
}
Global.adapter.Update(Global.dt);
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
当我运行时,我的
DataGridView
被填充了。这一部分没问题。然后我双击一行,另一个窗口就会出现。该窗口获取所选行的值。上面有一个更新按钮。我使用它来更改所选行的字段值。我与你分享的第三段代码就是用来完成这个操作的。但是我得到了 ORA-00904: "STATE" 无效标识符 的错误。我进行了调试。错误出现在这一行:
Global.adapter.Update(Global.dt);
提示:
数据表实际上是由ORM类创建的。
据我所知,这与双引号有关。
Ex : 'Select State from COMPUTERS' does not work but 'Select "State" from COMPUTERS' does.
在填充 DataGridView
时,我在 SQL
查询中使用 '\' 前缀来解决同样的问题。这个问题已经得到解决。
但是当我尝试给字段赋一个新值时,我不能使用它。我需要一种方法来解决这个问题。
我猜问题出在这里:
Global.dt.Rows[rowId]["State"] = 0;
我能帮你做什么?谢谢。