2016-06-27 2 views
0

эй надеюсь кто-то может помочь, сходят с ума :-)DataAdapter.Update не обновляя

делает небольшую программу, которая получает набор данных и обновления его снова, у меня есть следующий SQLclass. Набор данных проходит отлично, а значения изменяются, но они не подключаются к БД.

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]); 

    } 

} 
} 

Когда я называю класс и попытаться сделать обновить DataAdapter возвращает 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; 
    } 

ответ

0

Хм, казалось, как я должен был вопросов, первый из я не мог использовать UpdateProcedure, который я не знаю, почему, а также «.Expression» можно было использовать, это решило его.

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); 
Смежные вопросы