C# Online database

Status
Niet open voor verdere reacties.

mathid

Gebruiker
Lid geworden
3 feb 2007
Berichten
61
Hallo, ik ben al een tijdje bezig met C# te programmeren. (applicaties)
Ik heb al wat dingen geprobeerd met een lokale database ( via Xampp )
Maar ik zou nu graag een agenda maken dat je overal kan lezen, dus met een online database.
Ik heb al lang gezocht maar niks gevonden. Weet iemand soms een goede code of een tutorial ofzo om dit te kunnen doen (Liefst nederlands:o)

Om met de locale database te werken gebruikte ik deze code :

Code:
MySqlConnection sqlConn = new MySqlConnection("Database=test; Data Source=localhost; User Id='root'; Password='geheim'");
            string query = "SELECT id, naam, leeftijd FROM leden";
            string resultaat = "";
            MySqlCommand myCommando = new MySqlCommand(query, sqlConn);
            MySqlDataReader sqlReader;

            try
            {
                sqlConn.Open();
                sqlReader = myCommando.ExecuteReader();
                while (sqlReader.Read())
                {
                    resultaat += sqlReader.GetValue(0).ToString() + " " + sqlReader.GetString(1) + " " + sqlReader.GetInt32(2).ToString() + "\n";
                }
                sqlReader.Close();
                lbl_gegevens.Text = resultaat;
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                sqlConn.Close();
            }


Indien je een betere code weet mag je dat ook natuurlijk zeggen he :)

alvast bedankt e ! :thumb:
 
Laatst bewerkt door een moderator:
normaal gezien verloopt het connecteren met externe database op dezelfde manier als het connecteren naar locale databases, ze moeten beiden op dezelfde manier benaderd worden. Je gaat gewoon je connectionstring moeten aanpassen (ipadres,gebruiker,..) en zorgen dat je externe database en provider remote connections toestaat.

Succes
 
Ok bedankt voor je reactie :thumb:

maar weet jij soms ergens een gratis host ofzo die Remote connections heeft openstaan ? Ik gebruik momenteel 1 betalende host en 2 gratis hosts, maar alle 3 hebben ze geen remote connections :confused:

Weten jullie er soms?
 
met remote connection bedoel ik gewoon dat de host toelaat dat je van client zijde kan werken op een database. In normale omstandigheden (meestal dus) kan dit perfect.
 
Ja, dat wist ik wel ;)

Ik heb nu geprobeert connectie te maken maar het lukt niet... Ik heb wel het gevoel dat hij in de database geraakt, want hij zegt mij wanneer een tabel niet bestaat.

Maar toch krijg ik er geen gegevens uit...
Ik laat je de code dat ik gebruik hier eventjes zien ... :


Code:
MySqlConnection sqlConn = new MySqlConnection("Database='webweb889_data'; Data Source='mysql1.100ws.com'; User Id='webweb889_data'; Password='GEHEIM'");

            string query = "SELECT visitors  FROM stats";
            string resultaat = "";
            MySqlCommand myCommando = new MySqlCommand(query, sqlConn);
            MySqlDataReader sqlReader;

            try
            {
                sqlConn.Open();
                sqlReader = myCommando.ExecuteReader();
                while (sqlReader.Read())
                {
                    resultaat += sqlReader.GetValue(0).ToString() + " " + sqlReader.GetString(1) + " " + sqlReader.GetInt32(2).ToString() + "\n";
                }
                sqlReader.Close();
                lbl_gegevens.Text = resultaat;
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                sqlConn.Close();
            }

        }

En ik krijg nu de volgende fout :

my.php



Weten jullie raad?:thumb:
 
mm ik zie dat je gebruikt maakt van een MySqlConnection, iets wat standaard niet in .Net voorkomt. Misschien dat het probleem eerder in die richting is te vinden.

Ik zie dat je met een datareader werkt. Misschien beter eens poberen met een connectieloze dataAdapter te werken:

Code:
//Declaraties

OdbcConnection con = new OdbcConnection();
OdbcDataAdapter da = new OdbcDataAdapter();
DataSet ds = new DataSet();


//Connectie opzetten
void OpenConnection()
        {
            try
            {
                con.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=servernaam(bv.google.com);Database=databasenaam;uid=User; password=Password;Option=3";
                con.Open();
            }
            catch(Exception e)
            {
                Debug.WriteLine(e.ToString())
            }
        }
//Conectie sluiten
 void CloseConnection()
        {
            try
            {
                con.Close();
            }
            catch(Exception e)
            {
                Debug.WriteLine(e.ToString())
            }

        }

//GetDateset methode die een gevulde dataset returned op basis van uw string die als
//parameter wordt meegegeven

 DataSet GetData(string sql)
        {
		
            OpenConnection();

            OdbcCommand command = new OdbcCommand(sql, con);
            da.SelectCommand = command;

            da.Fill(ds,tabel);
            CloseConnection();
            MessageBox.Show(ds.Tables[0].Rows[3].ItemArray[1]);
            return ds;

        }

//Een functie waarmee je een datagrid kan vullen

void fillDataGrid()
        {
            try
            {
                sql = richTextBox1.Text;
                if (sql != "")
                {
                    bindingSource1.DataSource = GetData(sql).Tables[tabel];
                    dataGrid.DataSource = bindingSource1[0];

                }
                else
                {
                    MessageBox.Show("No query found/error in sql statement");
                }
            }
            catch
            {
                MessageBox.Show("Table not found");
            }
        }

In je programma kan je dus gewoo achter een knop de functie fillDataGrid() plaatsen.

Ik hoop dat dit voorbeeld U vooruit kan helpen.

Succes

Anti
 
Bedankt alvast voor je hulp !

maar conn en debug geeft hij als fout aan
welk using System moet ik gebruiken?

Groetjes Mathi :thumb:
 
Ik heb nog een paar bugs :
Ik heb de mysql driver geïnstalleerd.
Ik gebruik Visual Studio 2005...

telkens hij
Code:
con
ziet trekt hij er een lijntje onder voor te zeggen dat hij het niet herkent en dat het dus fout is...

ook bij het stukje :
Code:
da.SelectCommand = command;

            da.Fill(ds,tabel);
            CloseConnection();
            MessageBox.Show(ds.Tables[0].Rows[3].ItemArray[1]);
            return ds;
doet hij moeilijk...want bij da, ds, tabel meld hij ook een bug.

En dan nog ten slotte :

Code:
sql = richTextBox1.Text;
                if (sql != "")
                {
                    bindingSource1.DataSource = GetData(sql).Tables[tabel];
                    dataGrid.DataSource = bindingSource1[0];

                }

sql geeft hij een bug, bindingSource1 ook een bug, en dataGrid ook


Moet ik nog een using System aanroepen ofzo?
Srr, ben nog niet zolang met C# bezig ;)

:thumb:
 
dit moet globaal gedeclareerd zijn


dus boven alle methode net onder

Code:
public class UwClasse
{
OdbcConnection con = new OdbcConnection();
OdbcDataAdapter da = new OdbcDataAdapter();
DataSet ds = new DataSet();
String sql;

      public UwClasse()
      {
        initializeComponents
       }

}

zou het probleem met con,ds,da,sql moeten oplossen

en de bindingsource en datagrid zijn controls die je op het form moet slepen
en kan hernoemen. Dus

Sleep eerst een BindingSource op uw control en noem deze bSource
Sleep dan een DataGridView op uw control en noem deze grid

Code:
sql = richTextBox1.Text;
                if (sql != "")
                {
                    bSource.DataSource = GetData(sql).Tables[tabel];
                    grid.DataSource = bindingSource1[0];

                }

Het is niet mijn gewoonte om code uit te delen en bij deze ook de laatste keer. Ik typ die code hier uit het hoofd neer en dat is ongetest dus moet je zelf wat spelen met de controls en variabelen...

succes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan