Datenbank editor BackSlash "fehler"

11/19/2016 16:00 Hugo081#1
Hallo ich hoffe mir kann hier jemand helfen.

zu meinen Problem ich habe mir ein datenbank editor geschrieben der liest mir einfach via Gridviewer die db aus und die einzelnen spalten lass ich mir in einzelne boxen ausgeben, funktioniert alles sehr gut auch Insert und Update haut hin.

ich habe aber eine Spalte da stehen sachen drin mit \ auslesen geht
aber wenn ich jetzt insert oder update, schreibt er mir zwar die sachen rein aber lässt backslash einfach weg woran kann das liegen ?

beispiel :

Data\Item\Common\ITEM_treasure02.smc
nach dem update
DataItemCommonITEM_treasure02.smc

Grüße Hugo
11/19/2016 17:46 Njahs#2
Probier es mit einem doppelten Backslash.
([Only registered and activated users can see links. Click Here To Register...])

Grüße
11/20/2016 14:00 Hugo081#3
Quote:
Originally Posted by Njahs View Post
Probier es mit einem doppelten Backslash.
([Only registered and activated users can see links. Click Here To Register...])

Grüße
Danke für die Antwort

ich bin aber eher noch recht beu in sachen c#

vielleicht könnte mir das jemand an hand hier von erklären bitte ?
ich blick da gerade 0 durch :/


Code:
private void button27_Click_1(object sender, EventArgs e)
{
    StreamReader sw = null;
    try
    {
        sw = new StreamReader(Path.Combine(Application.StartupPath + @"\config.ini"));
        Host_txt.Text = sw.ReadLine();
        user_txt.Text = sw.ReadLine();
        paswd_txt.Text = sw.ReadLine();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    finally
    {
        sw.Close();
    }

    this.timer1.Start();


    string constring = "datasource=" + Host_txt.Text + ";port=3306;username=" + user_txt.Text + ";password=" + paswd_txt.Text;
    MySqlConnection conDataBase = new MySqlConnection(constring);
    MySqlCommand cmdDataBase = new MySqlCommand("select a_index,a_file_smc from newproject_data.t_item ;", conDataBase);

    try
    {
        MySqlDataAdapter sda = new MySqlDataAdapter();
        sda.SelectCommand = cmdDataBase;
        DataTable dbdataset = new DataTable();
        sda.Fill(dbdataset);
        BindingSource bSource = new BindingSource();

        bSource.DataSource = dbdataset;
        dataGridView5.DataSource = bSource;
        sda.Update(dbdataset);

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);

    }
}

private void button28_Click(object sender, EventArgs e)
{
    string constring = "datasource=" + Host_txt.Text + ";port=3306;username=" + user_txt.Text + ";password=" + paswd_txt.Text;
    string Query = "insert into newproject_data.t_item (a_index,a_file_smc) values('" + this.textBox120.Text + "','" + this.textBox119.Text + "') ;";
    MySqlConnection conDataBase = new MySqlConnection(constring);
    MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
    MySqlDataReader myReader;

    try
    {
        conDataBase.Open();
        myReader = cmdDataBase.ExecuteReader();
        MessageBox.Show("Saved");
        while (myReader.Read())
        {


        }

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);

    }
}

so soll es sein nach insert : Data\Item\Common\ITEM_treasure02.smc
und so ist es leider : DataItemCommonITEM_treasure02.smc
11/20/2016 14:58 Njahs#4
Quote:
Originally Posted by Hugo081 View Post
Danke für die Antwort

ich bin aber eher noch recht beu in sachen c#

vielleicht könnte mir das jemand an hand hier von erklären bitte ?
ich blick da gerade 0 durch :/




so soll es sein nach insert : Data\Item\Common\ITEM_treasure02.smc
und so ist es leider : DataItemCommonITEM_treasure02.smc
Ganz einfach gesagt einfach jedes einzelne Backslash mit einem doppelten [Only registered and activated users can see links. Click Here To Register...] (in deiner query bzw. deinem 'DataItem' - Value).

Würde dann ungefähr so aussehen:

Code:
insert into ... values (this.textBox120.Text.Replace(@"\",@"\\"))
// oder alternativ:
this.textBox120.Text.Replace("\\","\\\\")
Mehr zu escaping in C# findest du hier: [Only registered and activated users can see links. Click Here To Register...]

Grüße
11/20/2016 16:35 Hugo081#5
Vielen lieben Dank jetzt hat es gefunkt.