none
Tablo Kolon isimlerini, kolon veri tiplerini ve allow null özelliklerini listelemek RRS feed

  • Soru

  • Arkadaşlar merhaba. Benim Öğrenci diye bir tablom var. Birde ListView'im. Ben butona tıklayınca list view'in sql serverde sağ tık Design yapınca çıkan list view gibi tablo özelliklerini göstermek istiyorum. Nasıl yapabilirim ?
    31 Ağustos 2012 Cuma 17:32

Yanıtlar

  • SqlConnection.GetSchema metodunu kullanabilir ve sonucu ListView'inda datasource olarak kullanabilirsin:

    void Main()
    {
       string strCon = @"server=.\SQLExpress;Trusted_Connection=yes;Database=Northwind";
       
       using (SqlConnection con = new SqlConnection(strCon))
       {
        con.Open();
        DataTable c = con.GetSchema("columns",new string[] {"Northwind",null,"Customers",null});
        con.Close();
      
        Form f = new ShowDataForm(c,"Columns");
        f.ShowDialog();
       }
     }
    
    public class ShowDataForm : Form
    {
      public ShowDataForm(DataTable tbl, string caption)
      {
         this.dgv = new System.Windows.Forms.DataGridView();
         this.dgv.Location = new System.Drawing.Point(0, 0);
         this.dgv.Dock = DockStyle.Fill;
         this.dgv.DataSource = tbl;
         this.Text = caption;
         this.Controls.Add(this.dgv);
         this.ClientSize = new System.Drawing.Size(1024, 768);
      }
      private System.Windows.Forms.DataGridView dgv;
    }

    3 Eylül 2012 Pazartesi 11:23
  • use <veritabanı_adı>

    go

    select c.name, t.name from sys.columns c
    inner join sys.types t
    on c.system_type_id = t.system_type_id
    where object_id = object_id('tablo_adı')


    Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com

    31 Ağustos 2012 Cuma 17:58

Tüm Yanıtlar

  • use <veritabanı_adı>

    go

    select c.name, t.name from sys.columns c
    inner join sys.types t
    on c.system_type_id = t.system_type_id
    where object_id = object_id('tablo_adı')


    Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com

    31 Ağustos 2012 Cuma 17:58
  • DECLARE @Table_Name NVARCHAR(100)
    SET @Table_Name = 'mytablename'
    
    
    SELECT  object_name(c.id)    AS table_name, 
            c.name               AS column_name,
            t.name               AS data_type
    FROM  syscolumns AS c 
    INNER JOIN systypes   AS t  ON c.xtype = t.xtype
    WHERE c.id = object_id( @Table_Name )

    Böyle bir kod buldum ama bu işimi görür mü ? Bu kodu nasıl kullanabilirim ? Biri bana bu kodun ne işe yaradığını açıklar mı ?
    • Yanıt Olarak Öneren MustafaTorun 1 Eylül 2012 Cumartesi 16:45
    31 Ağustos 2012 Cuma 18:09
  • benim yazdığım kodun aynısı, ama benim yazdığım SQL 2005 ve sonrası için, senin yazdığın ise 2000'de de çalışır, daha öncekilerde de test etmek gerek.

    İki kod da işini görür. Kodu nasıl kullanacağın ise sana kalmış, ama zaten yapmak istediğini belirtmiştin ilk mesajında. Bir ListView veya DataGridView'ü bu kodun sonucuyla (DataSet) doldurabilirsin.


    Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com

    31 Ağustos 2012 Cuma 18:19
  • SqlConnection.GetSchema metodunu kullanabilir ve sonucu ListView'inda datasource olarak kullanabilirsin:

    void Main()
    {
       string strCon = @"server=.\SQLExpress;Trusted_Connection=yes;Database=Northwind";
       
       using (SqlConnection con = new SqlConnection(strCon))
       {
        con.Open();
        DataTable c = con.GetSchema("columns",new string[] {"Northwind",null,"Customers",null});
        con.Close();
      
        Form f = new ShowDataForm(c,"Columns");
        f.ShowDialog();
       }
     }
    
    public class ShowDataForm : Form
    {
      public ShowDataForm(DataTable tbl, string caption)
      {
         this.dgv = new System.Windows.Forms.DataGridView();
         this.dgv.Location = new System.Drawing.Point(0, 0);
         this.dgv.Dock = DockStyle.Fill;
         this.dgv.DataSource = tbl;
         this.Text = caption;
         this.Controls.Add(this.dgv);
         this.ClientSize = new System.Drawing.Size(1024, 768);
      }
      private System.Windows.Forms.DataGridView dgv;
    }

    3 Eylül 2012 Pazartesi 11:23