我们在编程的时候总是要向数据库中插入数据,以下是我向数据库(Oracle)中插入数据用的函数
我感觉写得很不好,以为是我把向(sqlserver)中插入数据用的函数改变过来的,由于Oracle中没有
自增字段,所以函数效率很低,请大家写出你向数据库(最好是Oracle)中插入数据的函数!!!     public void insertcmd(string keyname,string tab,String[] colum,String[] values)
{

if(colum.Length!=values.Length)
{
throw new System.Exception("The colums number must equal the values number!");

}
else
{
try

{
this.ConOpen();

string sql="select *  from " + tab;
string sqlmax="select max("+keyname+")  from " + tab;
countflag=this.CommandScalar("select count(*)  from " + tab);
if(countflag==0)
{
tempvalu=this.GetIdDataReader(sql);
}
else
{
tempvalu=this.CommandScalar(sqlmax);
}

OracleDataAdapter da=new OracleDataAdapter(sql,cnn);
OracleCommandBuilder MyCB=new OracleCommandBuilder(da);
DataSet ds=new DataSet();
da.MissingSchemaAction=MissingSchemaAction.AddWithKey;
da.Fill(ds,tab);
DataRow myrow=ds.Tables[tab].NewRow();
myrow[keyname]=Convert.ToString(tempvalu+1); for(int i=0;i<=colum.Length-1;i++)
{
myrow[colum[i]]=values[i];
}
ds.Tables[tab].Rows.Add(myrow);
da.Update(ds,tab); ds=null;
MyCB=null;
da=null;

}
catch(OracleException ex)
{
throw new System.Exception(ex.Message,ex);

}
finally
{
this.ConClose();

}

}


}

解决方案 »

  1.   

    不要用datatable+dataadapter来增加一行。这样做的话,如果以后有1 million的数据,你都要先生成一个1 million行的datatable,再增加1行,再更新到database的table中去?
      

  2.   

    DataRow dr=dt.NewRow();
    dr["id"]="jfjldk";
    dt.Add(dr);
    设备器update
      

  3.   

    不要用datatable+dataadapter来增加一行。这样做的话,如果以后有1 million的数据,你都要先生成一个1 million行的datatable,再增加1行,再更新到database的table中去?
      

  4.   

    插入一样直接用sqlcommand就可以,直接用sql语句。
    比如
    OledbCommand  oc=new OledbCommand("insert into table (a,b) values (aa,bb)",conn);
    oc.ExquetNonquery();