canavar123 Posted November 3, 2019 Share Posted November 3, 2019 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; } Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted November 3, 2019 Editor Share Posted November 3, 2019 (edited) 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 November 3, 2019 by pairs 1 Quote Link to comment Share on other sites More sharing options...
hadibeolsun Posted November 3, 2019 Share Posted November 3, 2019 "SELECT * FROM " + database_table + " WHERE kelimeID='@kelimeID'"); Kodunu Şu şekilde değiştirir misin.. ("SELECT * FROM ' " + database_table +" ' WHERE kelimeID="+@kelimeID); 1 Quote Link to comment Share on other sites More sharing options...
canavar123 Posted November 4, 2019 Author Share Posted November 4, 2019 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. Quote Link to comment Share on other sites More sharing options...
hadibeolsun Posted November 4, 2019 Share Posted November 4, 2019 (edited) cmd.CommandText = "SELECT * FROM ' " + database_table + " ' WHERE kelimeID=@kelimeID"; bu şekilde de deneyebilirsin. Parantezler işi bozuyor. Edited November 4, 2019 by hadibeolsun 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.