这个用的就是OLEDB呀,还有什么别的用法?

解决方案 »

  1.   

    你在 oracle 里定义主建了吗?另外说一下 什么错误提示阿? 大家又不是编译器
      

  2.   

    主键的值都填了,而且代码运行没有错误提示,就是运行完了记录没插入去。而同样的代码把Connection对象换成ACCESS的就没有问题。
      

  3.   

    我说的是 ex.ToString() 是什么阿?
      

  4.   

    ex.ToString()是异常的描述,可以执行过程中没有异常发生,所以没有可以捕获的异常。我这么用ADO.NET是对的吗?编译器没有报错,而且在ACCESS上也能正确执行啊。
      

  5.   

    用户名和密码没错,
    报了个异常,不知道是什么意思,请大家指点。
    System.InvalidOperationException;对于不返回任何基表信息的SelectCommand不支持动态SQL生成。
     at System.Data.Common.DbDataAdapter.Update(Datarow[] dataRows,DataTableMapping tableMapping)
     at System.Data.Common.DbDataAdapter.Update(DataSet dataSet,String srcTable)
     at AdoNetTest.Form1.button1_Click(Object sender,EventArgs e)in d:\C#\adonettest\form1.cs:line 121
      

  6.   

    myda.Fill(ds,"table1"); 这句错了
    改成:  myda.Fill(ds,"t_gpsusers");
      

  7.   


     是不是你的表里没有数据?
     
     如果是,先添点测试数据看看
     
     另:在做GPS阿?什么公司
      

  8.   

    ("select * from t_gpsusers",mycn);
    这个表名如果在Oracle中也是小写的可能会出问题
      

  9.   

    改成:  myda.Fill(ds,"t_gpsusers");--------没有用。
    表里有数据。
    表名改成大写也没效果。太郁闷了,什么叫“对于不返回任何基表信息的SelectCommand不支持动态SQL生成。”啊。
      

  10.   

    DbDataAdapter的其他属性设了吗?表映射
      

  11.   

    DbDataAdapter的其他属性有哪些需要设的呀?
      

  12.   

    万一不行,就下个oracle_net.msi,OralceDataAdapter.fill()绝对成功!
      

  13.   

    难倒这种标准的方法对ORACLE不适用?
      

  14.   

    有同样的问题,改成oracleclient吧
      

  15.   

    把你的UpdateCommand 贴出来,可能你是用Access 生成的,后来改的Oracle Connection,可是命令不能通用
      

  16.   

    没用有UpdataCommand呀,只是调用了OleDbDataAdapter的Update方法啊。
    DataSet ds=new DataSet();
    myda.Fill(ds,"table1");
    DataRow dr;
    dr=ds.Tables["table1"].NewRow();
    dr["CARCODE"]="F0001";
    dr["GPSID"]="010199000099";
    dr["CARPHONE"]="13999999999";
    ds.Tables["table1"].Rows.Add(dr);
    myda.Update(ds,"table1");
      

  17.   

    自己重写Update方法.以下例子是为了同步数据库而写的,因为原有的Update不好用,你可以参考一下/// <summary>
    /// 自定义更新数据库
    /// </summary>
    /// <param name="ds"></param>
    /// <returns></returns>
    public bool Update (DataSet ds)
    {
    try
    {
    string sql = "DELETE From UserInfo ";

    base.ExecuteNonQuery(sql);

    sql = "DELETE From DepartmentInfo ";

    base.ExecuteNonQuery(sql);
    // open 
    if(connection.State != ConnectionState.Closed )
    connection.Close();
    connection.Open(); SqlCommand command = new SqlCommand();
    command.Connection = connection; SqlDataAdapter sqlDA= new SqlDataAdapter(); sqlDA.SelectCommand = command; // DataSet dschange = ds.GetChanges();
    foreach (DataTable dt in ds.Tables)
    {
    SqlCommand insert = new SqlCommand();
    string items = "";
    string values = "";
    foreach( DataColumn dc in dt.Columns )
    {
    items += ","+dc.ColumnName   ;
    values += ",@"+dc.ColumnName ;
    // types[index] = dc.DataType ;
    insert.Parameters.Add(new System.Data.SqlClient.SqlParameter("@"+dc.ColumnName, dc.DataType   ));
    }
    items = items.Substring(1);
    values = values.Substring(1); string cmd = " INSERT INTO  " + dt.TableName + " ( "+items+") values ( "+values+")"; insert.CommandText = cmd;
    insert.Connection = base.connection ; sqlDA.InsertCommand = insert;

    foreach(DataRow dr in dt.Rows)
    {

    for(int i = 0 ;  i < insert.Parameters.Count; i++)
    {
    insert.Parameters[i].Value = dr[i];
    }
    insert.ExecuteNonQuery();
    }
    // sqlDA.Update(dt);
    } // sqlDA.Update(dschange); 本来想用这种方法,可是没有效果// int nRows = sqlDA.Fill( dsExists, "table2" ); // if(nRows == 0 )
    // dataSet = null; if(connection.State != ConnectionState.Closed )
    connection.Close(); }
    catch(Exception ex )
    {

    Console.WriteLine(ex.Message);
    return false;
    }
    return true;
    }