Jump to content

Access Oledb Veritabanında Where Komutu çalışmıyor


canavar123
 Share

Recommended Posts

Benim Free MySQL sitelerinden aldığım MySQL veritabanı ile çalışan bir projem vardı. Ancak projeyi Access veritabanına geçirmek istedim. Tüm komutlarım ve yönetim panelim sorunsuz çalışıyor ancak programda Where ile belirttiğim veriyi veritabanından çekemez hale geldim. Eklerde resimleri ekliyorum. RastgeleID komutu geçerli rastgele bir sayı döndürüyor sadece. O sayı değeri de ID olarak veritabanında mevcut bundan eminim. Oraya 100 gibi bir sayı eklediğimde de o ID de mevcut olmasına rağmen aynı sorun oluyor.

        void KelimeBilgileriniAl()
        {
            if (sorulanKelimeler.Count == kelimeSayisi + 1)
            {
                MessageBox.Show("Tüm kelimeleri cevapladınız.");
            }
            else
            {
                try
                {
                    if (OpenConnection() == true)
                    {
                        OleDbCommand cmd = new OleDbCommand();
                        cmd.Connection = connection;
                        cmd.CommandText = ("SELECT * FROM " + database_table + " WHERE kelimeID='@kelimeID'");
                        cmd.Parameters.AddWithValue("@kelimeID", RastgeleID());
                        OleDbDataReader read = cmd.ExecuteReader();
                        while (read.Read())
                        {
                            kelimeLabel.Text = read["kelime"].ToString();
                            kelimeAnlamiLabel.Text = read["anlami"].ToString();
                        }
                        cmd.Dispose();
                        CloseConnection();
                    }
                }
                catch(OleDbException ex)
                {
                    MessageBox.Show(ex.Message, ex.ErrorCode.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
                    CloseConnection();
                }
            }
        }

        int RastgeleID()
        {
            while (sorulanKelimeler.Contains(secilenID)) secilenID = rnd.Next(1, kelimeSayisi + 1);
            sorulanKelimeler.Add(secilenID);
            return secilenID;
        }

 

Screenshot_27.png

Screenshot_26.png

Screenshot_25.png

Screenshot_28.png

Link to comment
Share on other sites

  • Editor

DataType mismatch hatasi tip uyumsuzlugunda olur. Kelime id bir rakam ve siz ona string gonderiyorsunuz. Kosulu su sekilde duzenlerseniz calisir where kelimeId = @kelimeId. Tek tirnaklar olmayacak.

Edited by pairs
  • Thanks 1
Link to comment
Share on other sites

pairs, 03.11.2019 - 13:41 yazdı:

DataType mismatch hatasi tip uyumsuzlugunda olur. Kelime id bir rakam ve siz ona string gonderiyorsunuz. Kosulu su sekilde duzenlerseniz calisir where kelimeId = @kelimeId. Tek tirnaklar olmayacak.

Hocam tırnakların string'e dönüştürdüğü inanın aklıma hiç gelmedi. Gerçekten çok teşekkür ederim.

hadibeolsun, 03.11.2019 - 14:16 yazdı:

"SELECT * FROM " + database_table + " WHERE kelimeID='@kelimeID'");

Kodunu Şu şekilde değiştirir misin..

("SELECT * FROM ' " + database_table +" ' WHERE kelimeID="+@kelimeID);

 

Size de teşekkür ederim ancak bu tip ifadelerin tırnak içinde kullanılması gerektiğini sanıyordum. Dışına çıkınca hata verdi zaten.

Screenshot_29.png.b7ac7d6ab2725aae50ea29942c8b12a3.png

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...