Avatar billede woogoo Nybegynder
16. januar 2007 - 20:00 Der er 32 kommentarer

få textbox.Text sat ind i mySql database!

Hej eksperter.

Nu har jeg siddet her og roddet med det her i et stykke tid.. (4 timer) og kan simpelthen ikke komme videre.. Jeg har en application med nogle textBox's.. de har hvert fået et navn osv.

Nu er det sådan at når jeg trykker på knappen skal det som står i de textBox's sættes ind i en mySql database jeg har! Jeg har på fornemmelsen at programmet ikke har nogen problemer med at oprette forbindelse til databasen.. for den skriver "Databasen er fundet" når jeg har skriver det rigtige database navn og at den ikke er fundet hvis jeg med vilje laver en fejl i databasenavnet!..

Men jeg skal have sat disse værdier ind.. How do I do that?

jeg har dette stykke kode:

        private void submit_Click(object sender, EventArgs e)
        {

            string _fornavn = indfornavn.Text;
            string _efternavn = indefternavn.Text;
            string _vej = indvej.Text;
            int _husnr = int.Parse(indhusnr.Text);
            int _postnr = int.Parse(indpostnr.Text);
            string _by = indby.Text;
            int _tlf = int.Parse(indtlf.Text);
            string _mail = indmail.Text;               
                           
            SqlConnection conn = new SqlConnection("Server=localhost;Database=persondata;Uid=root;Pwd=xxxxx;");
            SqlCommand cm = new SqlCommand("Server=localhost;Database=persondata;Uid=root;Pwd=xxxxx;", conn);
            try
            {
                conn.Open();
                SqlCommand InsertRecord = new SqlCommand("INSERT INTO personer(fornavn, efternavn, vej, husnr, postnr, by, tlf, email) VALUES ('" + _fornavn + "', '" + _efternavn + "', '" + _vej + "', '" + _husnr + "', '" + _postnr + "', '" + _by + "', '" + _tlf + "', '" + _mail + "')", conn);
                cm.ExecuteNonQuery();
            }
            finally
            {
            }

            conn.Close();

men intet sker..

Ud over det vil jeg også gerne have hjælp til at få den til at indsætte id automatisk.. id er i databasen sat til auto_increment men hvordan får jeg den til at forstå det så jeg ikke selv er tvunget til at indsætte en værdi?

håber på hjælp hurtigst muligt!

// woogoo
Avatar billede hmortensen Nybegynder
16. januar 2007 - 20:10 #1
Du bruger SqlClient i stedet for MySqlClient. Du kan hente mySQL connectoren på www.mysql.com

Ydermere laver du et command objekt, som ikke bruger, bagefter et som du kalder med din query, men du executer den ubrugte.

Jeg vil også anbefale dig at kigge i artikler, der er en om parameters.
Avatar billede kalp Novice
16. januar 2007 - 20:12 #2
SqlConnection conn = new SqlConnection("Server=localhost;Database=persondata;Uid=root;Pwd=xxxxx;");
            SqlCommand cm = new SqlCommand();
            try
            {
                conn.Open();
cm.Connection = conn;
cm.Statement = "INSERT INTO personer(fornavn, efternavn, vej, husnr, postnr, by, tlf, email) VALUES ('" + _fornavn + "', '" + _efternavn + "', '" + _vej + "', '" + _husnr + "', '" + _postnr + "', '" + _by + "', '" + _tlf + "', '" + _mail + "')";
                cm.ExecuteNonQuery();
            }
            finally
            {
            }
Avatar billede kalp Novice
16. januar 2007 - 20:13 #3
håber din compiller kan se fejlene i det jeg lige skrev.. det du selv havde lavet var forkert!
Avatar billede kalp Novice
16. januar 2007 - 20:14 #4
cm.Statement
skal være
cm.CommandText
Avatar billede woogoo Nybegynder
16. januar 2007 - 20:16 #5
kalp -> ja.. min compiler skriver noget med cm.Statement.. at jeg ikke har den.. skal jo få den gennem mySQL connectoren som hmortensen nævner?
Avatar billede kalp Novice
16. januar 2007 - 20:17 #6
nej ret den linje til

cm.CommandText = "INSERT INTO personer(fornavn, efternavn, vej, husnr, postnr, by, tlf, email) VALUES ('" + _fornavn + "', '" + _efternavn + "', '" + _vej + "', '" + _husnr + "', '" + _postnr + "', '" + _by + "', '" + _tlf + "', '" + _mail + "')";
Avatar billede kalp Novice
16. januar 2007 - 20:20 #7
jeg siger ikke at det hmortensen er forkert... men indtil videre er der jo mange fejl i det du havde lavet så måske kan vi få det til at virke ved blot at rette lidt=)

hvis det stadig ikke virker tilføj lige dette i din kode

catch(Exception dd){Console.WriteLine(dd.Message);}
           
før

finally
            {
            }
Avatar billede woogoo Nybegynder
16. januar 2007 - 20:26 #8
før jeg indsatte:
catch(Exception dd){Console.WriteLine(dd.Message);}
og kørte applicationen kom den med en fejl ved conn.Open(); hvor der stod:

"An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"

efter jeg puttede det ind sker der ikke noget.. den skriver heller ikke til databasen.. men der kommer ingen fejlmeddelelser.. men det er ligesom om den står og hænger lidt...
Avatar billede kalp Novice
16. januar 2007 - 20:34 #9
du hoster den ikke lokalt vel? hvis det er en udbyder hvem har du så?
Avatar billede woogoo Nybegynder
16. januar 2007 - 20:35 #10
jo.. den kører lokalt på computeren?
Avatar billede kalp Novice
16. januar 2007 - 20:35 #11
hvad hedder din database og placering?
for du sidder jo og prøver og connecte til en sql server... du har vel ikke sat en sql server op eller?
Avatar billede dr_chaos Nybegynder
16. januar 2007 - 20:37 #12
kalp han skal ikke bruge standard sqlconnection.
Han skal bruge mysqlconnecter som hmortensen sagde.
Den ligger her:
http://dev.mysql.com/downloads/connector/net/1.0.html
Avatar billede kalp Novice
16. januar 2007 - 20:38 #13
lokalt ser connectionstring normalt ud som denne

Server=.\SQLExpress;AttachDbFilename=c:\xxxx\xxx\dindatabase.mdf;Database=databasenavn;Trusted_Connection=Yes;
Avatar billede woogoo Nybegynder
16. januar 2007 - 20:38 #14
min database hedder persondata og placeringen er localhost..! jeg kan godt oprette en ekstern.. (har webhotel hos Cliche).. Og så oprette en database der?

og jo, jeg har sat en SQL server op.. (ikke en Apache server med tilhørene SQL)..
Avatar billede kalp Novice
16. januar 2007 - 20:39 #15
jeg er faktisk total forvirret nu..

Er det MySQL

ELLER

MSSQl?
Avatar billede a1a1 Novice
16. januar 2007 - 20:39 #16
Du skal have installert en .net mySql driver (eller referere til dlløen)
:o)
Avatar billede dr_chaos Nybegynder
16. januar 2007 - 20:41 #17
overskriften er mysql :)
Avatar billede woogoo Nybegynder
16. januar 2007 - 20:41 #18
Det er MySQL!

Hvertfald ikke MSSQL!
Avatar billede kalp Novice
16. januar 2007 - 20:43 #19
fair nok=)

SQL Server = MSSQL

og da du skrev du har en SQL server i forrige kommentar blev jeg lidt forvirret;O)

om ikke andet, så burde din SQL og opsætning er kode være fin nu når det sidste er på plads også.
Avatar billede woogoo Nybegynder
16. januar 2007 - 20:44 #20
ok.. nu har jeg hentet mysqlconnector..

og har tilføjet den:
using MySql.Data.MySqlClient;

hvad skal jeg så skrive?
Avatar billede dr_chaos Nybegynder
16. januar 2007 - 20:49 #21
Noget i denne stil:
        private void submit_Click(object sender, EventArgs e)
        {

            string _fornavn = indfornavn.Text;
            string _efternavn = indefternavn.Text;
            string _vej = indvej.Text;
            int _husnr = int.Parse(indhusnr.Text);
            int _postnr = int.Parse(indpostnr.Text);
            string _by = indby.Text;
            int _tlf = int.Parse(indtlf.Text);
            string _mail = indmail.Text;             
                         
            MySqlConnection conn = new MySqlConnection("Server=localhost;Database=persondata;Uid=root;Pwd=xxxxx;");
                    try
            {
                conn.Open();
                MySqlCommand InsertRecord = new MySqlCommand("INSERT INTO personer(fornavn, efternavn, vej, husnr, postnr, by, tlf, email) VALUES ('" + _fornavn + "', '" + _efternavn + "', '" + _vej + "', '" + _husnr + "', '" + _postnr + "', '" + _by + "', '" + _tlf + "', '" + _mail + "')", conn);
                cm.ExecuteNonQuery();
            }
            finally
            {
            }

            conn.Close();
Avatar billede dr_chaos Nybegynder
16. januar 2007 - 20:49 #22
du skal bare tjekke at connectionstring er correct.
Avatar billede woogoo Nybegynder
16. januar 2007 - 20:52 #23
der mangler en cm.. skal den bare være "SqlCommand cm = new SqlCommand("Server=localhost;Database=persondata;Uid=root;Pwd=xxxxx;", conn);" ? eller ?
Avatar billede a1a1 Novice
16. januar 2007 - 20:53 #24
tjaaaa, det kan jeg ikke huske ;o)

men du har fået "help" med i din mysql driver installer ;o)

se her...

http://www.15seconds.com/issue/050210.htm
Avatar billede a1a1 Novice
16. januar 2007 - 20:55 #25
fandt dette på nette:

Dim sConString As String = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost;
DATABASE=Your_Mysql_DB; UID=mysql_username; PASSWORD=mysql_password; OPTION=3"
Dim oConnection as ODBCConnection = new ODBCConnection(sConString)
Dim sSQL as String = "SELECT * FROM Table1"
Dim oDataAdapter as ODBCDataAdapter = New ODBCDataAdapter(sSQL, oConnection)
Dim oDataSet as DataSet = new DataSet()
oDataAdapter.Fill(oDataSet)
oDataGrid.DataSource = oDataSet
oDataGrid.DataBind()
Avatar billede hmortensen Nybegynder
16. januar 2007 - 21:10 #26
Her er artiklen om parameters:
http://www.eksperten.dk/artikler/831

Så det bliver noget i den her retning:

MySqlConnection conn = new MySqlConnection("Server=localhost;Database=persondata;Uid=root;Pwd=xxxxx;");
MySqlCommand cmd = new MySqlCommand("INSERT INTO personer (fornavn, efternavn, vej, husnr, postnr, `by`, tlf, email) VALUES (?fornavn, ?efternavn, ?vej, ?husnr, ?postnr, ?by, ?tlf, ?email)", conn);
cmd.Parameters.Add("?fornavn", _fornavn);
cmd.Parameters.Add("?efternavn", _efternavn);
cmd.Parameters.Add("?vej", _vej);
cmd.Parameters.Add("?husnr", _husnr);
cmd.Parameters.Add("?postnr", _postnr);
cmd.Parameters.Add("?by", _by);
cmd.Parameters.Add("?tlf", _tlf);
cmd.Parameters.Add("?email", _email);
try
{
  conn.Open();
  cmd.ExecuteNonQuery();
}
finally
{
  conn.Close();
}
Avatar billede woogoo Nybegynder
16. januar 2007 - 21:26 #27
hmortensen > Lækkert! Det var lige det jeg stod og manglede! Nu virker det! :D Tak skal du have!

Nu hvor jeg er igang.. hvordan får man så hentet data (f.eks. Fornavn + Efternavn) fra tabellen og lagt ind i en listBox?
Avatar billede woogoo Nybegynder
16. januar 2007 - 21:37 #28
hmortensen > læg gerne svar! ;)
Avatar billede Syska Mester
16. januar 2007 - 23:16 #29
cmd.CommandText = "SELECT fornavn + ' ' + efternavn AS navn FROM personer";
string navn = (string)cmd.ExecuteScaler();
Avatar billede Syska Mester
16. januar 2007 - 23:17 #30
ExecuteScalar();
Avatar billede hmortensen Nybegynder
18. januar 2007 - 21:49 #31
Svar.
Avatar billede Syska Mester
01. februar 2007 - 16:21 #32
svar hvsi det skal bruges
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