2016-04-27 9 views
-1

私は顧客テーブルに何かを挿入するのにこのコードを使用しますが、それはうまくいかないでしょうか? 私のデータベースが更新されないとrの値は常に0.`Adapter.Update()が機能しません。

using (SqlConnection cn = new SqlConnection(con)) 
     { 
      cn.Open(); 
      string query = string.Format("Select * From Customers"); 
      SqlDataAdapter adapter = new SqlDataAdapter(); 
      SqlCommandBuilder cb = new SqlCommandBuilder(adapter); 


      adapter.SelectCommand = new SqlCommand(query, cn); 
      DataSet db = new DataSet(); 
      adapter.Fill(db,"Customers"); 

      string m = "Bon app'" ,city="london"; 
      query = string.Format("Insert Into Customers (CompanyName , City) Values ('{0}','{1}')",m,city); 
      adapter.InsertCommand =new SqlCommand(query, cn); 

      int r= adapter.Update(db,"Customers"); 

     Console.WriteLine(r); 

`

+0

は、私はあなたがado.netについての詳細を読むべきだと思います。または、挿入を行うためにクエリを実行するか、データアダプタを使用している場合は、データセットに行を追加する必要があります – Pikoh

答えて

1

あなたはあなたのデータセット/ DataTableのに行を追加していないので、そこDataAdapterある挿入には何もしています。

db.Tables[0].Rows.Add(m, city); 
int r = adapter.Update(db,"Customers"); 

それ以外は、SQLクエリを作成するために文字列を連結しないでください。パラメータ化されたクエリを使用します。

ので、ここでのSQLパラメータを使用して修正したバージョンです:

using (SqlConnection cn = new SqlConnection(con)) 
{ 
    cn.Open(); 
    string selectQuery = "Select * From Customers"; 
    string insertQuery = "Insert Into Customers (CompanyName , City) Values (@CompanyName, @City)"; 
    SqlDataAdapter adapter = new SqlDataAdapter(); 
    adapter.SelectCommand = new SqlCommand(selectQuery, cn); 
    adapter.InsertCommand = new SqlCommand(insertQuery, cn); 
    DataSet db = new DataSet(); 
    adapter.Fill(db, "Customers"); 

    var icp = adapter.InsertCommand.Parameters; 
    icp.Add("@CompanyName", SqlDbType.NVarChar, 150, "CompanyName"); // optional, restrict length according to database max-length 
    icp.Add("@City", SqlDbType.NVarChar, 100, "City"); 

    DataRow newRow = db.Tables["Customers"].Rows.Add(); 
    newRow.SetField("CompanyName", "Bon app"); 
    newRow.SetField("City", "london"); 
    int r = adapter.Update(db, "Customers"); 
} 
関連する問題