Merhabalar,
C# ile sql bağlantısı yapmaya çalışıyorum. Veritabanına bağlantı sağlanıyor. Ancak içinde olan tabloyu görmüyor.
Invalıd object name 'Tablo_adi' hatasi alıyorum. Ne yapabilirim? Yardımcı olabilirseniz gerçekten sevinirim.
C# Invalid object name hatası
17
●5.731
- 27-08-2014, 11:42:55
- 27-08-2014, 17:07:12VoyL adlı üyeden alıntı: mesajı görüntüle
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace Project1X { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // baglanti nesnesi oluşturulur: public SqlConnection baglanti = new SqlConnection("Data Source=.; Initial Catalog=Film; Integrated Security=true"); // kisiler tablosundaki verileri çekmek için yazılan fonksiyon: void kisiGetir() { // Bağlantı durumu kontrol edilip kapalı ise açılır: if (baglanti.State == ConnectionState.Closed) { baglanti.Open(); MessageBox.Show("bağladı if statement"); } // Bağlantı açıldığında çalışacak sql sorgusu için cmd nesnesi oluşturulur: SqlCommand cmd = new SqlCommand("SELECT * FROM Tablo2 ORDER BY ID", baglanti); /* Veriler ile proje arasında adaptör görevi sağlayan bir ara eleman olan adp nesnesi oluşturulur: */ SqlDataAdapter adp = new SqlDataAdapter(cmd); // DataTable türündeki dtable nesnesi oluşturulur: DataTable dtable = new DataTable(); // adp'nin çalıştırdığı sql sorgusunun getirdiği sonuçlar dtable'a aktarılır: try{ adp.Fill(dtable); } catch(SqlException ex) { MessageBox.Show(ex.Message); } // dataGridView'ımız verileri dtable'dan alır ve gösterir: dataGridView1.DataSource = dtable; // Bağlantı kapatılır: baglanti.Close(); } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'filmDataSet1.Tablo2' table. You can move, or remove it, as needed. this.tablo2TableAdapter.Fill(this.filmDataSet1.Tablo2); // TODO: This line of code loads data into the 'filmDataSet.Tablo2' table. You can move, or remove it, as needed. // Bağlantı cümlesi: //baglanti = new SqlConnection("Data Source=.; Initial Catalog=Film; Integrated Security=true"); kisiGetir(); } private void button1_Click(object sender, EventArgs e) { // try ile yazacağımız kod denenir: try { // Bağlantı açıldığında çalışacak sql sorgusu için cmd nesnesi oluşturulur: SqlCommand cmd = new SqlCommand("INSERT INTO Tablo2 (baslik,cikis_tarihi,tur,fiyat) VALUES (@baslik,@cikis_tarihi,@tur,@fiyat)", baglanti); // TextBox'lardan alınan bilgiler etiketlere, oradan da sorguya gönderilir: cmd.Parameters.AddWithValue("@baslik", textBox1.Text); cmd.Parameters.AddWithValue("@cikis_tarihi", textBox2.Text); cmd.Parameters.AddWithValue("@tur", textBox3.Text); cmd.Parameters.AddWithValue("@fiyat", textBox4.Text); //Bağlantı kapalı ise açılır: if (baglanti.State == ConnectionState.Closed) { baglanti.Open(); } // Sorgu çalıştırılır: cmd.ExecuteNonQuery(); // Bağlantı kapatılır: baglanti.Close(); // kisiGetir fonksiyonu ile tablonun son hali getirilir: kisiGetir(); // Eklendi mesajı gösterilir: MessageBox.Show("Eklendi."); } // Bir yerde hata varsa catch ile yakalanır ve mesaj verilir: catch (SqlException ex2) { MessageBox.Show(ex2.Message); } } private void buttonGuncelle_Click(object sender, EventArgs e) { // Onayı kontrol edecek durum tanımlanır ve checkbox işaretli ise durum true yapılır: // try ile yazacağımız kod denenir: try { // Bağlantı açıldığında çalışacak sql sorgusu için cmd nesnesi oluşturulur: SqlCommand cmd = new SqlCommand("UPDATE Tablo2 SET baslik=@baslik,cikis_tarihi=@cikis_tarihi,tur=@tur,fiyat=@fiyat WHERE id=@id ", baglanti); // Fare ile seçilmiş satırın değeri @id'ye aktarılır: cmd.Parameters.AddWithValue("@id", dataGridView1.CurrentRow.Cells[0].Value); // TextBox'lardan alınan bilgiler etiketlere, oradan da sorguya gönderilir: cmd.Parameters.AddWithValue("@baslik", textBox1.Text); cmd.Parameters.AddWithValue("@cikis_tarihi", textBox2.Text); cmd.Parameters.AddWithValue("@tur", textBox3.Text); cmd.Parameters.AddWithValue("@fiyat", textBox4.Text); // Bağlantı kapalı ise açılır: if (baglanti.State == ConnectionState.Closed) { baglanti.Open(); } // Sorgu çalıştırılır: cmd.ExecuteNonQuery(); // Bağlantı kapatılır: baglanti.Close(); // kisiGetir fonksiyonu ile tablonun son hali getirilir: kisiGetir(); // Güncellendi mesajı gösterilir: MessageBox.Show("Güncellendi."); } // Bir yerde hata varsa catch ile yakalanır ve mesaj verilir: catch(SqlException) { MessageBox.Show("Hata olustu!"); } } private void buttonSil_Click(object sender, EventArgs e) { // Onayı kontrol edecek durum tanımlanır ve checkbox işaretli ise durum true yapılır: // try ile yazacağımız kod denenir: try { // bağlantı açıldığında çalışacak sql sorgusu için cmd nesnesi oluşturulur: SqlCommand cmd = new SqlCommand("DELETE FROM Tablo2 WHERE ID=@id", baglanti); // Fare ile seçili satırın değeri @id'ye aktarılır: cmd.Parameters.AddWithValue("@id", dataGridView1.CurrentRow.Cells[0].Value); // Bağlantı kapalı ise açılır: if (baglanti.State == ConnectionState.Closed) { baglanti.Open(); } // Sorgu çalıştırılır: cmd.ExecuteNonQuery(); // Bağlantı kapatılır: baglanti.Close(); // kisiGetir fonksiyonu ile tablonun son hali getirilir: kisiGetir(); // Silindi mesajı gösterilir: MessageBox.Show("Silindi."); } // Bir yerde hata varsa catch ile yakalanır ve mesaj verilir: catch (SqlException) { MessageBox.Show("Hata olustu!"); } } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void fillByToolStripButton_Click(object sender, EventArgs e) { try { this.tablo2TableAdapter.FillBy(this.filmDataSet1.Tablo2); } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } } private void fillByToolStripButton_Click_1(object sender, EventArgs e) { try { this.tablo2TableAdapter.FillBy(this.filmDataSet1.Tablo2); } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } } } }
Kod burada hocam. - 29-08-2014, 10:45:04Veritabanına bağlantı yapıyorum. Acaba bağlanmıyor mu diye kendim de test yaptım fakat veritabanı bağlantısında herhangi bir sorun yok. Sorun veritabanının altında var olan tabloyu görmüyor ve invalid object name hatası veriyor. Belki de sorun başka birşeydir ama aldığım hata invalid object hatası.
Kodu bir önceki mesajımda paylaşmıştım.
Yardımcı olabileceklere şimdiden teşekkür ederim. - 29-08-2014, 15:26:59proqress adlı üyeden alıntı: mesajı görüntüle
Bu hatayı nasıl düzeltebilirim sizce ? - 29-08-2014, 16:37:37ObreuS adlı üyeden alıntı: mesajı görüntüle