none
User girişinde dize geçerli bir datetime olarak tanınmadı hatası RRS feed

  • Soru

  • uygulama girişinde kullanılan userları sqlite dbsine kaydederek uygulama içerisinde ekledimgiriş ekranında geçerli kullanıcı ile giriş yapmak istediğimde ""dize geçerli bir datetime olarak tanınmadı"" hatası vermekte. neyden kaynaklı olduğunu anlamadım.

    yardımınızı rica ediyorum

    PcKasaUpdate yeni = new PcKasaUpdate();
    
                if (UserTxtBox.Text == "" || PasswordTxtBox.Text =="")
                {
                    MessageBox.Show("Giriş Yapmak için tüm alanları doldurmanız gerekiyor!", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                }
    
                else
                {
    
                    try
                    {
                        SQLiteConnection baglan = new SQLiteConnection();
    
                        baglan.ConnectionString = ("Data Source=db/Users.db;");
                        baglan.Open();
                        string sql = "SELECT * FROM  User_Info WHERE User_Name=@kullanici and Password=@Sifre";
                        SQLiteParameter prm1 = new SQLiteParameter("kullanici", UserTxtBox.Text);
                        SQLiteParameter prm2 = new SQLiteParameter("Sifre", PasswordTxtBox.Text);
                        SQLiteCommand cmd = new SQLiteCommand(sql, baglan);
                        cmd.Parameters.Add(prm1);
                        cmd.Parameters.Add(prm2);
                        DataTable dt = new DataTable();
                        SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
                        da.Fill(dt);
    
    
                        if (dt.Rows.Count > 0)
                        {
    
                            this.Hide();
                            yeni.TopMost = true;
                            yeni.ShowDialog();
    
                        }
    
                        else
                        {
                            MessageBox.Show("Veritabanında b\x00f6yle bir kullanıcı bulunamadı");
                        }
    
                    }
    
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
    
    
                    this.baglan.Close();
    
                }
                
    


    29 Mayıs 2019 Çarşamba 07:50

Tüm Yanıtlar

  • SELECT * FROM User_Info ...

    yerine:

    Select count(*) from User_Info ...

    kullanmayi deneyin. Sonucu da datatable'a almayacaksınız:

    var result = Convert.ToInt32( cmd.ExecuteScalar() );
    
    if (result > 0) // mevcut
    {
      // ...
    }
     

    Not: Normalde veritabanında boyle dua şifre saklanıp karsilastirilmaz ama burada güvenliğin onemsiz oldugunu varsayıyorum.

    Hatanin kaynağı, muhtemelen SQLite'da geçersiz bir tarih\saat degeri var (SQLite'da normalde date\datetime data tipi yok, text olarak saklıyor, orada bir hata yapmış olmalisiniz). 



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.

    29 Mayıs 2019 Çarşamba 12:10
    Yanıtlayıcı