Avatar billede laurits Nybegynder
26. august 2005 - 12:14 Der er 22 kommentarer og
1 løsning

Update DB vha. DataSet

Hej
Jeg har en problem med at få opdateret databasen.
Når jeg trykker på en knap vil jeg gerne have dataene i datagrid’e over i DB.
Jeg har prøvet med denne kommando men får en fejl i ”DataRow[]... ” linien.
Nogen der kan se hvad der er galt?
public DataSet createCmdsAndUpdate(string tableName)
        {
            adapter.SelectCommand = new OleDbCommand("SELECT * FROM ["+tableName+"];", con);
            OleDbCommandBuilder ODCB = new OleDbCommandBuilder(adapter);
            DataRow[] myDataRowArray = dataSet.Tables[0].Select(null, null, DataViewRowState.Added);
            adapter.Update(myDataRowArray);
            DataSet xDataSet = dataSet.GetChanges(DataRowState.Modified);
            con.Close();
            return dataSet;
            try
            {   
                if (dataSet.HasChanges() == false)
                {
                    dataSet.RejectChanges();
                }

                if (dataSet.HasChanges() == true)
                {
                    adapter.Update(xDataSet,tableName);
                    dataSet.AcceptChanges();
                }
            }
            catch (Exception ex)
            {
                // Update error, resolve and try again
            }
        }
Avatar billede laurits Nybegynder
26. august 2005 - 12:22 #1
øhh glemte lige at skrive at jeg kalder ovenstående metode fra metoden:
private void SkrivDB_Click(object sender, System.EventArgs e)
        {
            acconn = new AccesConnect();
            dataSet = acconn.createCmdsAndUpdate(TN);       
        }   
fra en anden klasse.
Avatar billede smsng Nybegynder
26. august 2005 - 13:44 #2
Avatar billede laurits Nybegynder
26. august 2005 - 13:50 #3
ja den side har jeg kigget på før, men jeg synes ikke lige jeg fik så meget ud af det :-(
Avatar billede smsng Nybegynder
26. august 2005 - 13:55 #4
Skal der ikke stå tabelnavn i dataSet.Tables[]
Avatar billede laurits Nybegynder
26. august 2005 - 14:03 #5
jo måske, men prg. gå stadig ned, med fejl i selv samme linie
Avatar billede smsng Nybegynder
26. august 2005 - 14:09 #6
Er det et DataRow array du har??
Avatar billede laurits Nybegynder
26. august 2005 - 14:17 #7
hmm nej det er det da vist ikke.... DOH!
Avatar billede laurits Nybegynder
26. august 2005 - 14:27 #8
Nu har jeg så forsøgt at simplificere koden lidt, dog uden held.
public DataSet CreateCmdsAndUpdate(string tableName)
        {
            adapter.SelectCommand = new OleDbCommand("SELECT * FROM ["+tableName+"];", con);
            OleDbCommandBuilder ODCB = new OleDbCommandBuilder(adapter);

            DataSet dataSet = new DataSet();
            adapter.Fill(dataSet, tableName);
            adapter.Update(dataSet, tableName);
            dataSet.AcceptChanges();

            con.Close();
            return dataSet;
}
Avatar billede smsng Nybegynder
26. august 2005 - 14:41 #9
hvad siger den af fejl??
Avatar billede laurits Nybegynder
26. august 2005 - 14:43 #10
den melder ingen fejl, men opdatere bare ikke DB
Avatar billede smsng Nybegynder
26. august 2005 - 14:44 #11
prøv med:
adapter.Update(dataSet);
Avatar billede laurits Nybegynder
26. august 2005 - 14:47 #12
får fejlen "An unhandled exception of type 'System.InvalidOperationException' occurred in system.data.dll

Additional information: Update unable to find TableMapping['Table'] or DataTable 'Table'."
når jeg indsætte den dit forslag
Avatar billede smsng Nybegynder
26. august 2005 - 14:49 #13
Prøv lige det her :-)

public DataSet CreateCmdsAndUpdate(string tableName)
{
OleDbConnection myConn = new OleDbConnection(myConnection);
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand("SELECT * FROM ["+tableName+"];", con);
OleDbCommandBuilder ODCB = new OleDbCommandBuilder(adapter);

    myConn.Open();

    DataSet dataSet = new DataSet();
    adapter.Fill(dataSet);

    //code to modify data in dataset here
    adapter.Update(dataSet, tableName);

    myConn.Close();

    return dataSet;
}
Avatar billede laurits Nybegynder
26. august 2005 - 14:56 #14
Bliver nødt til at lave 1. line i metoden om til: OleDbConnection con = new OleDbConnection();
Men får fejlen:
An unhandled exception of type 'System.InvalidOperationException' occurred in system.data.dll

Additional information: The ConnectionString property has not been initialized.

Jeg kan se at det er denne samme metode jeg har forsøgt at lave min om til...
Avatar billede smsng Nybegynder
26. august 2005 - 15:07 #15
Fandt lige det her. Det er nok noget i den her retning du skal bruge.
Jeg er ikke helt sikker på højresiden i linie 2.

Mådke ved du det??

OleDbConnection con = new OleDbConnection ();
con.ConnectionString = "Data Source=(local);" +
                            "Initial Catalog=mySQLServerDBName;" +
                            "Integrated Security=SSPI";
Avatar billede smsng Nybegynder
26. august 2005 - 15:10 #16
Fandt også den her:

string connectionstring = "server=MyServer;database=MyDatabaseDB;" +
                                    "uid=superuser;password=superpwd" ;

måske siger det dig mere :-)
Avatar billede smsng Nybegynder
26. august 2005 - 15:12 #17
using System.Data.SqlClient;
SqlConnection oSQLConn = new SqlConnection();
oSQLConn.ConnectionString="my connectionstring";
oSQLConn.Open();

SqlClient skal dog lige laves om til OleDb.
Avatar billede laurits Nybegynder
26. august 2005 - 15:13 #18
neej ikke specielt, men er det ikke hvis der er angivet password m.m.?
Avatar billede smsng Nybegynder
26. august 2005 - 15:13 #19
Avatar billede smsng Nybegynder
26. august 2005 - 15:14 #20
tjoh, men tænkte at man måske bare kunne udelade det.
Avatar billede smsng Nybegynder
26. august 2005 - 15:18 #21
Den her burde hjælpe dig

string connectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connectionString);
Avatar billede laurits Nybegynder
01. marts 2007 - 23:06 #22
.
Avatar billede juks Novice
25. januar 2008 - 13:02 #23
kan du ikke lige smide løsningen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester