2012-04-24 68 views
2

我已经建立了与DataAdapter到.mdb文件的连接,但插入,删除和更新命令为空,我无法使用它们。插入,删除和更新命令不是由适配器构建的

为什么它是这样的,有什么解决方案?

+1

你能用你用有 – las 2012-04-24 10:36:03

+0

我通过可视化数据生成它的一些代码示例说明问题adapter.i的意思是我没有写代码。但视觉工作室并没有创建插入命令。 – Feri73 2012-04-24 10:38:17

+0

那么你有什么错误,你现在想做什么? – Ste 2012-04-24 10:56:15

回答

0

要了解这一点,您应该了解SqlCommand和SqlCommandBuilder的区别。

Command对象用于对数据库执行标量或非查询命令。您可以将命令对象的CommandText属性设置为要运行的sql语句,然后使用它的ExecuteScalar或ExecuteNonQuery方法运行它。

CommandBuilder对象用于根据您提供的Select语句为您自动创建Update,Delete和Insert SQL语句。你会声明一个DataAdapter对象,将它的SelectCommand.CommandText属性设置为你的Select SQL语句。然后,当您声明一个CommandBuilder对象时,您将数据适配器包含在CommandBuilder的构造函数参数中,并且在运行DataAdapter时它会自动为您创建其他语句。

例如:

//使用的SqlDataAdapter

的Update方法保存在一个数据库中的记录
using System.Data; 
using System.Data.SqlClient; 

class dd 
{ 
static void Main() 
{ 
     SqlConnection cn=new SqlConnection("server=.\SqlExpress;uid=sa;pwd=tiger;database=employeemaster"); 
     SqlDataAdapter da=new SqlDataAdapter("select no,name from employee",cn); 
     DataTable dt=new DataTable(); 
     da.Fill(dt); 

     //emp has 2 columns known as no and name. 

     //Initialize the SqlCommandBuilder. 
     SqlCommandBuilder cd=new SqlComandBuilder(da); 

     //create a DataRow 
     DataRow dr=dt.NewRow(); 
     dr["no"]=101; 
     dr["name"]="romil"; 
     //the row is temporarily saved 
     dt.Rows.Add(dr); 

     //save the Row permanently in database 


      da.Update(dt); 
    } 
} 
相关问题