C# login hiba

C# login hiba
2011-12-18T17:36:39+01:00
2011-12-18T19:20:22+01:00
2022-08-05T06:10:29+02:00
huiner
Sziasztok!

Az executescalar-nál ezt írja ki: Syntax error in string in query expression


using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsFormsApplication1 { public partial class Form2 : Form { OleDbConnection connect = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Lilian\Documents\adat2.accdb"); public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { string selectstring = "Select * from felhasznalok where Vezetéknév=" + textBox1.Text + " AND jelszó" + textBox2.Text + "'"; OleDbCommand myoledbcommand = new OleDbCommand(selectstring, connect); connect.Open(); String strResult = String.Empty; strResult = (String)myoledbcommand.ExecuteScalar(); connect.Close(); if (strResult.Length > 0) { MessageBox.Show("Hiba!"); } else {MessageBox.Show("Siker!"); } } } }
Mutasd a teljes hozzászólást!

  • Lehet hiányzik innen pár aposztróf meg egyenlőségjel, csupán ilyenek....

    Vezetéknév=" + textBox1.Text + " AND jelszó" + textBox2.Text + "'";
    Mutasd a teljes hozzászólást!
  • A
    selectstring
    -ben
    jelszó
    után nem kell egyenlőségjel ("=") ?
    Mutasd a teljes hozzászólást!
  • Látod, a varázsló pont ilyen hibáktól ment meg.
    Miért nem használod, nincs Visual Studio?
    Mutasd a teljes hozzászólást!
  • Kijavítottam de még így se jó! A hiba ugyanaz!
    Mutasd a teljes hozzászólást!

  • tring selectstring = "Select * from felhasznalok where Vezetéknév=" + textBox1.Text + " AND jelszó" + textBox2.Text + "'";

    vezetéknév = '' kell ,lévén ez egy szöveg lesz! ahogy a jelszó is legyen jelszó = ''

    tehát valami ilyesmi:

    "Select * from felhasznalok where Vezetéknév='" + textBox1.Text + "' AND jelszó ='" + textBox2.Text + "'"
    Mutasd a teljes hozzászólást!
  • Most meg ezt írja ki: Az objektumhivatkozás nincs beállítva semmilyen objektumpéldányra.

    erre: if (strResult.Length > 0)

    Segítsetek légyszi!
    Mutasd a teljes hozzászólást!
  • valszeg : vagy nincs ilyen user
    vagy nem jó a lekérés módja! :)
    biztos ékezetes?
    biztos ékezet mentes?
    én a beírást(a textbox ) trimmelném minden képpen
    aztán kisbetüsre alakítanám, bár nem tudom mennyire kisnagybetüs a rendszered :)
    Mutasd a teljes hozzászólást!
  • aztán kezdeném az alapokat :) Mindig oda térj vissza.
    Eléred simán a usert? vagyis a felhasználót?
    ha már azt nem éred el akkor azt old meg :)
    ha eléred akkor nyilván a password lesz a megoldás
    ha a tied az adatbázis, felejtsd el az ékezetes tábla/oszlop neveket. Sokat segít. Ahogy ne fogadd el azokat se :) mármint a beírásnál eleve zárd ki , csak angol betük legyenek :)
    aztán még millió dolgot kellene figyelembe venni de ez már nem ide tartozik...(pl hogy a jelszót ne direktbe kérd le, hanem alakítsd át md5 és társaira, és eleve így tárold az adatbázisba. stb stb
    Mutasd a teljes hozzászólást!
  • ehelyett inkább:

    int iResult;
    iResult = Convert.ToInt32(myoledbcommand.ExecuteScalar());

    //...

    if (iResult > 0)
    {
    MessageBox.Show("Siker!");
    }
    else
    {
    MessageBox.Show("Hiba!");
    }

    Esetleg megpróbálhatod DataReader segítségével elérni az Access táblát:
    MS Access Application With C# - C# Help
    Mutasd a teljes hozzászólást!
  • Kipróbáltam, nálam ez működik:
    Saját adatok:
    adatbázis: D:\teszt99.accdb
    tábla: users
    Mező1: vezeteknev
    Mező2: keresztnev


    private void button1_Click(object sender, EventArgs e) { OleDbConnection connect = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\teszt99.accdb"); string selectstring = "Select * from USERS where vezeteknev = '" + textBox1.Text + "' AND keresztnev = '" + textBox2.Text + "'"; OleDbCommand myoledbcommand = new OleDbCommand(selectstring, connect); connect.Open(); int iResult; iResult = Convert.ToInt32(myoledbcommand.ExecuteScalar()); connect.Close(); if (iResult > 0) { MessageBox.Show("Siker!"); } else { MessageBox.Show("Hiba!"); } }

    (viszont a kis és nagybetűt azt nem különbözteti meg.....érdemes megfogadni a jelszóra vonatkozó tanácsokat itt is meg a másik kérdésednél is amit mondtak....)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd