日期:2014-05-19  浏览次数:20870 次

下面的代码能编译过,用DATASET 和 MySqlDataAdapter 操作数据库 , 请问为什么不能插入一个记录到数据库呢
string   strconnection=(string)ConfigurationSettings.AppSettings[Global.CfgKeyConnString];  
SqlConnection     myconnection=new   SqlConnection(strconnection);  
DataSet   ds=new   DataSet   ();
SqlDataAdapter     adapter   =   new   SqlDataAdapter();
string   strsql= "select   *   from   jo_parts   ";
adapter.SelectCommand   =   new   SqlCommand(strsql   ,   myconnection);      
adapter.Fill   (ds, "data ");  
string   isql= "INSERT   INTO   jo_parts   VALUES( 'U526FASX ', 'abc ',3, 'rrrrrrr ',10,23) ";
adapter.InsertCommand   =new   SqlCommand   (isql,myconnection);
adapter.Update   (ds, "data ");

------解决方案--------------------
因为Adpater插入,修改,删除数据是根据DataRow的状态来确定的光指定insertcommand 是不够的
try
UpDate之前
DataRow dr = ds.Tables[ "data "].NewRow();
dr[...] = 值
ds.Tables[ "data "].Rows.Add(dr)
------解决方案--------------------
using(SqlConntion conn=new SqlConnection(connstr))
{
string str= "INSERT INTO jo_parts VALUES( 'U526FASX ', 'abc ',3, 'rrrrrrr ',10,23) ";
SqlCommand cmd=new SqlCommand(str,conn);
try
{
conn.open();
cmd.ExecuteNonQuery();
}
catch
{
}
}
这样就可以了
------解决方案--------------------
SqlDataAdapter是自己管理connection的关闭和打开,commond必须自己打开和关闭connection
------解决方案--------------------
要么跳开DATASET用INSERT直接对DB操作,或者就是在DATASET中添加DATAROW,然后在UPDATE