MySQL Row Count WPF   otázka

C#, WPF, Databáze

Dobrý den,

chci se zeptat, jak pomocí C# ve WPF zjistím pomocí SQL Command (např.: SELECT * FROM database WHERE name='user' AND passwor='password') počet řádku v databázi?

Prozkoušel jsem pár rád z googlu, ale buď mi to hází error nebo že řádku je 0 (což je blbost).

Zde je jak se napojují k DB:

MySql.Data.MySqlClient.MySqlConnection conn;
            string myConnectionString;

            myConnectionString = "server=127.0.0.1;uid=root;" +
                "pwd=gz711bk6xi;database=test;";

            try
            {
                conn = new MySql.Data.MySqlClient.MySqlConnection();
                conn.ConnectionString = myConnectionString;
                conn.Open();

            }
            catch
            {
                MessageBox.Show("Can't connect to database");
                Application.Current.Shutdown();
            }

Děkují předem za radu

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Volejte SQL dotaz:

SELECT COUNT(*) FROM database WHERE name='user' AND passwor='password'

protože takto dotaz vrací jeden řádek o jednom sloupci, tak na načtení použijete metodu ExecuteScalar http://msdn.microsoft.com/en-us/library/....

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tohle vím, ExecuteScalar jsem zkoušel, ale asi blbě jelikož mi vždy vrací 0.

Zde přikládám.

MySqlConnection conn;
            string myConnectionString;

            myConnectionString = "server=127.0.0.1;uid=root;" +
                "pwd=gz711bk96xi;database=test;";

            try
            {
                conn = new MySqlConnection();
                conn.ConnectionString = myConnectionString;
                conn.Open();
                MySqlCommand cmd = new MySqlCommand("SELECT COUNT(*) FROM users WHERE name='user'", conn);
                int count = Convert.ToInt32(cmd.ExecuteScalar());
                MessageBox.Show(count.ToString());

            }
            catch
            {
                MessageBox.Show("Can't connect to database");
                Application.Current.Shutdown();
            }
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste hodnotu do where podmínky předávat parametrem.

string query = "SELECT COUNT(*) FROM users WHERE name = @name";
using(MySqlConnection connection = new MySqlConnection(myConnectionString))
{
    using(MySqlCommand command = new MySqlCommand(query, connection))
    {
        command.Parameters.Add("@name", "user");
        try
        {
            connection.Open();
            int count = Convert.ToInt32(command.ExecuteScalar());
            MessageBox.Show(count.ToString());
        }
        catch
        {
            MessageBox.Show("Can't connect to database");
            Application.Current.Shutdown();
        }
    }
}
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Furt to vrací 0.

Do databáze se to připojí.

Už jsem myslel že to píšu špatně a mám někde v db chybu, ale ne, vše je OK.

Nechápu čím to může být.

PS: Vrací to 0 ikdyž dám jen

SELECT (*) FROM users
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nezkoušel jste to udělat bez závorek?

SELECT * FROM users
nahlásit spamnahlásit spam 0 odpovědětodpovědět

To jsem zkoušel furt to vrací 0.

Když zkusím stejný SQL příkaz pomocí PHP tak to vrátí počet řádku v pohodě, nechápu proč tu ne.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback