读书人

在使用DataSet删除一条记录时报出OR

发布时间: 2011-12-31 23:50:30 作者: rapoo

请教大家,在使用DataSet删除一条记录时报出ORA-01036: 非法的变量名/编号,程序附后,辛苦大家看一下
我用如下方式在Oracle数据库中创建的表
create table test(
col1 char(10),
col2 int,
primary key(col1))

insert into test values( 'aaa ',1);
insert into test values( 'bbb ',2);
insert into test values( 'ccc ',3);
insert into test values( 'ddd ',4);
commit

然后用如下语句去执行删除
static void Delete()
{
OracleConnection conn = new OracleConnection( "Server=fzjclk_192.168.51.12;Password=fzjc;User ID=fzjc ");
OracleDataAdapter adp = new OracleDataAdapter();
DataSet ds = new DataSet();

try
{
OracleCommand cmd = new OracleCommand( "select * from test ", conn);
adp.SelectCommand = cmd;

OracleCommand deleteCmd = new OracleCommand( "delete from test where col1=? ", conn);
deleteCmd.Parameters.Add( "col1 ", OracleType.Char, 10, "col1 ");
adp.DeleteCommand = deleteCmd;

adp.Fill(ds, "test ");

DataTable table = ds.Tables[ "test "];
DataRow row = table.Rows[0];
row.Delete();

adp.Update(ds, "test "); // 此行报错

table.AcceptChanges();
ds.AcceptChanges();
Console.WriteLine( "deleted ");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
if (conn != null) conn.Close();
}
}

执行后输出:

System.Data.OracleClient.OracleException: ORA-01036: 非法的变量名/编号

在 System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, B
atchCommandInfo[] batchCommands, Int32 commandCount)


在 System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCo
mmandInfo[] batchCommands, Int32 commandCount)
在 System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
在 System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tab
leMapping)
在 System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)

请教大家,变量名那块有错呢?

[解决办法]
楼主用的是Oracle数据库,MSDN上这个地方是以微软的数据库为例子

读书人网 >C#

热点推荐