WPF C# Połączenie z baza danych w cba.pl

0

Witajcie! :)
problemy z kontrolkami mam już skończone. Ogarniam już triggery, datatriggery i multitriggery. Teraz biorę się za połączenie z bazą danych sql.

  • Utworzyłem database na stronie www.cba.pl.
  • Kolejnym krokiem według jakiegoś tematu z tego forum było pobranie mySqlConnector.
  • Następnie wziąłem się za pisanie:
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="25"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button Name="hConnect" Content="Połącz z bazą danych" Click="hConnect_Click"/>
        <DataGrid Name="hData" Grid.Row="1" ItemsSource="{Binding}"/>
        
    </Grid>
</Window>
 

oraz część logiczna:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using MySql.Data.MySqlClient;
using System.Data;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void Connect(string server, string db, string id, string pass)
        {
            string mojePolaczenie =
            "SERVER=" + server + ";" +
            "DATABASE=" + db + ";" +
            "UID=" + id + ";" +
            "PASSWORD=" + pass + ";";

            string sql = "SELECT * FROM Przystanek";

            MySqlConnection polaczenie = new MySqlConnection(mojePolaczenie);
            try
            {
                polaczenie.Open();
                
                using (MySqlCommand cmdSel = new MySqlCommand(sql, polaczenie))
                {
                    DataTable dt = new DataTable();
                    MySqlDataAdapter da = new MySqlDataAdapter(cmdSel);
                    da.Fill(dt);
                    hData.ItemsSource = dt.DefaultView;
                }
            }
            catch
            {
                MessageBox.Show("Błąd logowania do bazy danych MySQL", "Błąd");
            }
            polaczenie.Close();
        }

        private void hConnect_Click(object sender, RoutedEventArgs e)
        {
            Connect("gswidwa.cba.pl", "gswidwa", "jakislogin", "jakieshaslo");
        }
    }
}
 

Niestety po kliknięciu w przycisk połącz otrzymuję wyjątek i wyskakuje mi MessageBox o niepowodzeniu. Co mogłem wprowadzić źle?
Login i hasło jak rozumiem są do mojej bazy danych, IP może być nazwa domeny, a database się zgadza...

c99985cee6.png

0

A ten wyjatek to jakiś tajemniczy wyjątek czy możesz napisać o co w nim chodzi?
Obstawiam, że darmowa baza na cda.pl nie obsługuje połączeń z zewnatrz.

0

A znacie jakąś stronę aby utworzyć takową bazę danych, aby można było się z nią połączyć? Potrzebuję tego do ćwiczeń.
EDIT:
https://www.cba.pl/pl/offer/hosting
Tak. za jedyne 4.40

0

Na Microsoft Azure możesz postawić małą bazę za free.

0

Już na 100% mam dostęp zewnętrzny. Nadal jednak nie mogę się połączyć z bazą danych :(
de33d1c2cf.png
21a8effd43.png

0

Pokaż treść błędu

0

86a2ae46cc.png

0

Jak do ćwiczeń to ściągnij sobie silnik bazy danych lokalnie? Nie musi być MySQL, łatwiej MSSQL Express lub wbudowany w visual studio silnik bazy danych do którego podepniesz się wpisując (localdb)\v11.0

0

Typowe uciekanie od problemu. Potrzebuję właśnie pomocy w dojściu, dlaczego to nie działa :(

0

host serwera mysql to "mysql.cba.pl"

--Connect("gswidwa.cba.pl",
++Connect("mysql.cba.pl",

Możesz się probować połączyć z bazą przy pomocy jakiego innego(sprawdzonego) programu, jak będzie to możliwe to próbuj łączyć się swoim programem.

0

no to stwórz tam (w bazie) jakiegoś usera bez dostępu do niczego i daj go tutaj (usera i pass) to ktoś inny sprawdzi czy może się połączyć. Potem go wywalisz i tyle

0
   string mojePolaczenie =
            "SERVER='" + server + "'," +
            "DATABASE='" + db + "'," +
            "UID='" + id + "'," +
            "PASSWORD='" + pass + "';";

Sprawdź jeszcze poprawność ConnectionStringa a dwa może spróbuj z taką składnią zapytania. Poza tym kolega wcześniej miał rację z lokalną bazą danych. Nie chodzi o uciekanie od problemu tylko większe możliwości w sprawdzaniu błędów. Będziesz mógł sobie włączyć lokalnie SQL Server Management Studio i tam śledzić dokładnie co dzieje się w komunikacji z bazą i gdzie może leżeć błąd. Osobiście mam postawiony serwer na wirtualnej maszynie i z nim się łączę a dodatkowo wykorzystując powyższe narzędzia dokładnie analizuję i optymalizuję to co się dzieje podczas wymiany danych z serwerem.

0

www.cba.pl
login - gswidwa
hasło - Grzesiu

Sprawdzi ktoś, czy u Was działa?

1

Też nie mogę się połączyć. Pisz/dzwoń/inne do nich z pytaniem OCB

0

Ok tak zrobię :)

0

Zamieniłem argumenty na

Connect("[email protected]", "gswidwa", "gswidwa", "Grzesiu"); 

teraz komunikat jest taki, jakbym był połączony z bazą danych, niestety dalej coś nie gra.
Wyjątek wyrzuca mi przy tej samej metodzie: polaczenie.open()
1932c1ee30.png

1
gswidwa napisał(a):

teraz komunikat jest taki, jakbym był połączony z bazą danych,

nieprawda - teraz komunikat mówi, że nie można znaleźć adresu dla [email protected] - nawet nie próbował się połączyć z jakąś konkretną bazą

1 użytkowników online, w tym zalogowanych: 0, gości: 1