title image


Smiley Data Grid bei neuer Query erst leeren, dann befüllen
Hallo allerseits,



ich habe mir eine kleine DB Klasse geschrieben, welche erstens die Verbindung zum MS SQL Server Express herstellt und dann eine Query dort ausführt und an das anfragende DataGrid gibt.



Hier der Quellcode:



USING ...

...



public class DB

{

public Connection objConn;

public Object RecordsAffected;

public Recordset rs;

public OleDbDataAdapter da;

public DataSet ds;



public void ConnectToDatabase(String cs)

{

//create ADODB Recordset object

rs = new Recordset();



//create OleDb Adapter object

da = new OleDbDataAdapter();



// finally Dataset to store returned recordset

ds = new DataSet();



objConn = new Connection();

objConn.Open(cs, null, null,(int)ConnectModeEnum.adModeUnknown);



}

public void execSQL(System.Windows.Forms.DataGrid receiver, String query)

{

try

{

//execute the query specifying static sursor, batch optimistic locking

rs.Open(query, objConn, CursorTypeEnum.adOpenKeyset, LockTypeEnum.adLockOptimistic, 1);

}

catch (Exception)

{

System.Windows.Forms.MessageBox.Show("Damit kann ich nichts anfangen!");

}



ds.Clear();



//use the overloaded version of Fill method which takes recordset as parameter

da.Fill(ds, rs, "Auswahl");



receiver.SetDataBinding(ds, "Auswahl");

}

}



Ich kann nun in meiner Form in einem Textfeld eine Anfrage an die Datenbank eingeben, und ich bekomme auch ein Ergebnis. Nur, wenn ich nun eine zweite Anfrage hinterher schicke, dann wird mein DataGrid um die Anzahl der Spalten der 2. Anfrage erweitert. Soll heißen, die Spalten aus der ersten Anfrage geistern noch irgendwo rum. Kann mir da jemand helfen? Habe in einem anderen Forum gelesen, daß das ds.Clear(); das übernimmt, doch dies kümmert sich bislang nur um die Anzahl der Zeilen. Muß ich den OleDbDataAdapter irgendwie leeren?



Viele Grüße,

epom

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: