3
我的全球級時:ORA-00904:無效的標識符錯誤更新
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);
TIPS:
表實際上是由ORM類創建。
據我所知,這是雙引號。
Ex : 'Select State from COMPUTERS' does not work but 'Select "State" from COMPUTERS' does.
我用「\」在我SQL
查詢前綴填充DataGridView
時有同樣的問題後。問題解決了。
但我不能在試圖爲該字段分配新值時使用它。我需要一種方法來做到這一點。
我想這個問題是在這裏:
Global.dt.Rows[rowId]["State"] = 0;
我能做些什麼?謝謝。
謝謝。這就是訣竅! –
builder.QuotePrefix =「\」「; builder.QuoteSuffix =」\「」; –