2016-06-27 16 views
0

hey hoffe jemand kann helfen, verrückt :-)DataAdapter.Update nicht aktualisiert

ein kleines Programm zu tun, dass es Daten-Set und Updates wieder bekommt, ich habe folgendes SQLclass. Das Dataset ist in Ordnung und die Werte werden geändert, es wird jedoch nicht an die Datenbank übergeben.

class SQLConnection 
{ 
    private string SQL_String; 
    private string strCON; 
    System.Data.SqlClient.SqlDataAdapter da_1; 

    public string Sql { 
     set { SQL_String = value; } 
    } 

    public string connection_string 
    { 
     set { strCON = value; }  

    } 

    public System.Data.DataSet Getconnection 
    { 
     get { return Getmydataset(); } 

    } 

    private System.Data.DataSet Getmydataset() 
    { 
     System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCON); 

     con.Open(); 

     da_1 = new System.Data.SqlClient.SqlDataAdapter(SQL_String, con); 

     System.Data.DataSet dat_set = new System.Data.DataSet(); 
     da_1.Fill(dat_set, "Table_Data_1"); 



     return dat_set; 

    } 

    public void UpdateDatabase(System.Data.DataSet ds) 
    { 


     System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da_1); 

     int test = cb.DataAdapter.Update(ds.Tables[0]); 

    } 

} 
} 

Wenn ich die Klasse aufrufen und versuchen, aktualisieren zu tun das Dataadapter liefert 0

static public void Main(string[] args) 
    { 
       GetClosedComputers(); 
    } 

getclosedcomputers

public static DataSet GetClosedComputers() 
    { 
     try 
     { 
      SQLConnection objConnect = new SQLConnection(); 
      conString = Properties.Settings.Default.Connectionstring; 

      objConnect.connection_string = conString; 
      //call stored procedure 
      objConnect.Sql = Properties.Settings.Default.GetNextClosedComputers; 


      ds = objConnect.Getconnection; 


      ds.Tables[0].Columns["State"].Expression = "'1'"; 
      objConnect.UpdateDatabase(ds); 

     } 
     catch (Exception e) 
     { 
      ErrorString = e.Message; 

     } 
     return ds; 
    } 

Antwort

0

Hmm schien wie ich Probleme hatte, zunächst i eine konnte nicht verwenden UpdateProcedure, die ich nicht sicher warum und auch die ".Expression" könnte verwendet werden, löste es.

objConnect = new SQLConnection(); 
conString = Properties.Settings.Default.Connectionstring; 

objConnect.connection_string = conString; 
// use sql query instead of stored procedure!!! 
objConnect.Sql = Properties.Settings.Default.Test; 

//Dataset with all computers 
ds = objConnect.Getconnection; 

//DataSet results = StartStopVM.StartVirtualMachines(ds); 
DataTable dt = ds.Tables[0]; 

//this didnt work 
//ds.Tables[0].Columns["State"].Expression = "'1'"; 
// 
foreach(DataRow dr in dt.Rows) 
{ 
    dr["State"] = 1; 

} 
objConnect.UpdateDatabase(ds);