• 27-08-2014, 11:42:55
    #1
    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.
  • 27-08-2014, 12:03:26
    #2
    kodunuzu buraya yazarsanız yardımcı olalım
  • 27-08-2014, 17:07:12
    #3
    VoyL adlı üyeden alıntı: mesajı görüntüle
    kodunuzu buraya yazarsanız yardımcı olalım
    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:04
    #4
    Veritabanı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, 14:57:46
    #5
    yanlışsam düzeltin ama dbadi.tabloadi şeklinde yazılması gerekmiyor mu?
  • 29-08-2014, 15:26:59
    #6
    proqress adlı üyeden alıntı: mesajı görüntüle
    yanlışsam düzeltin ama dbadi.tabloadi şeklinde yazılması gerekmiyor mu?
    Sizin dediğiniz şekilde de denedim ancak gene aynı hatayı verdi. INvalid object name diyor. Tablo adına rastgele brşeyler yazınca da aynı hatayı veriyor. Database e bağlanabiliyorum ancak tabloyu görmüyor sanırım.
    Bu hatayı nasıl düzeltebilirim sizce ?
  • 29-08-2014, 15:31:21
    #7
    Datasource kısmını 127.0.0.1 yada hangi servere bağlanacaksanız o şekilde yazın.
  • 29-08-2014, 16:37:37
    #8
    ObreuS adlı üyeden alıntı: mesajı görüntüle
    Datasource kısmını 127.0.0.1 yada hangi servere bağlanacaksanız o şekilde yazın.
    "." yani localhostta çalışıyorum zaten. sqlconnection baglantimda herhangi bir sıkıntı yok. try catch ile de bağlatıyı kontrol ettim. Bağlanmada herhangi bir sorunum yok ancak tabloyu görmüyor sorun orda onun sebebi ne olabilir ?
  • 29-08-2014, 18:35:17
    #9
    Entitiy Framework kullanırsan Ado.net in böyle saçma sapan hatalarından arınırsın