2017-12-30 38 views
1

Ich habe mit ADO.NET und SQL Server in einer Windows Forms-Anwendung geübt, aber ich kann nicht auf Knopfdruck Tabellendaten in DataGridView erhalten.DataGridView zeigt keine Daten von SQL Server Datenquelle

Es gibt keine Fehler und ich mache Server-Verbindungsprüfung. Ich habe einen entsprechenden Datenbank- und Tabellennamen mit einigen Daten darin.

Irgendwelche Ideen, was ich falsch mache?

Hier Code vom Button:

private void button1_Click(object sender, EventArgs e) 
    { 
     string ConnectionString = "Server=DESKTOP-FV268LU;Database=ado_database;Integrated Security=true"; 

     SqlConnection myConnection = new SqlConnection(); 
     myConnection.ConnectionString = ConnectionString; 
     myConnection.Open(); 

     if (myConnection.State == ConnectionState.Open) 
      label1.Text = "YES!"; 
     else if (myConnection.State != ConnectionState.Open) 
      label1.Text = "Nope!!"; 

     string sql = "SELECT * FROM Main"; 

     SqlDataAdapter myAdapter = new SqlDataAdapter(sql, myConnection); 

     DataSet myDataSet = new DataSet("Main"); 
     myAdapter.Fill(myDataSet, "Main"); 

     dataGridView1.AutoGenerateColumns = true; 
     dataGridView1.DataSource = myDataSet.DefaultViewManager; 
     dataGridView1.Refresh(); 
    } 
+1

Sollte sein: dataGridView1.DataSource = myDataSet.Tables [0]; – jdweng

Antwort

1

Sie müssen nach dem Aufruf die Datasource-Einstellung

dataGridView1.AutoGenerateColumns = true; 
dataGridView1.DataSource = myDataSet.DefaultViewManager; 
dataGridView1.DataBind(); 

EDIT

dataGridView1.DataSource = myDataSet.Tables[0]; 
    dataGridView1.AutoGenerateColumns = true; 
+0

meine DataGridView hat diese Methode nicht. Am nächsten ist DataBindings, aber das ist keine Methode. – kasixLv

+0

ist diese Windows-Form? – Sajeetharan

+0

Ja das ist Windows Form. – kasixLv

0

Wie wäre das?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.OleDb; 
using Excel = Microsoft.Office.Interop.Excel; 
using System.Data.SqlClient; 
using System.Diagnostics; 
using System.Configuration; 
using System.Data.SqlClient; 

namespace WindowsFormsApplication6 
{ 
    public partial class Form1 : Form 
    { 


     private DataTable table; 
     private DAL dal; 
     protected void Form_Load(object sender, EventArgs e) 

     { 
      dal = new DAL(); 
      table = dal.GetData(); 
      dataGridView1.DataSource = table; 
     } 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

private void button5_Click(object sender, EventArgs e) 
     { 
      dal.UpdateData(table); 
     } 

     class DAL //data access layer 
     { 
      string connString = @"Server=EXCEL-PC\EXCELDEVELOPER;Database=AdventureWorksLT2012;Trusted_Connection=True;"; 
      SqlDataAdapter da; 
      SqlCommandBuilder builder; 
      DataTable table; 
      SqlConnection conn; 
      public DataTable GetData() 
      { 
       table = new DataTable("dataGridView1"); 
       conn = new SqlConnection(connString); 
       da = new SqlDataAdapter(); 
       da.SelectCommand = new SqlCommand(@"SELECT * FROM [SalesLT].[Product]", conn); 
       builder = new SqlCommandBuilder(da); 
       da.Fill(table); 
       return table; 
      } 
      public void UpdateData(DataTable table) 
      { 
       if (da != null && builder != null) 
       { 
        da.Update(table); 
       } 
      } 
     } 

    } 
} 

Hier ist eine weitere Option für Sie zu berücksichtigen.

private void button6_Click(object sender, EventArgs e) 

     { 
      SqlConnection con = new System.Data.SqlClient.SqlConnection(); 
      con = new System.Data.SqlClient.SqlConnection(); 
      con.ConnectionString = "Server=EXCEL-PC\\EXCELDEVELOPER;Database=AdventureWorksLT2012;Trusted_Connection=True;"; 
      con.Open(); 
      SqlDataAdapter da = new SqlDataAdapter(); 

      for (int i = 0; i <= dataGridView1.Rows.Count - 2; i++) 
      { 

       String insertData = "INSERT INTO Import_List(Fname, Lname, Age) VALUES (@Fname, @Lname, @Age)"; 
       SqlCommand cmd = new SqlCommand(insertData, con); 
       cmd.Parameters.AddWithValue("@Fname", dataGridView1.Rows[i].Cells[0].Value); 
       cmd.Parameters.AddWithValue("@Lname", dataGridView1.Rows[i].Cells[1].Value); 
       cmd.Parameters.AddWithValue("@Age", dataGridView1.Rows[i].Cells[2].Value); 
       da.InsertCommand = cmd; 
       cmd.ExecuteNonQuery(); 
      } 

      con.Close(); 
     } 
+0

Ich habe vergessen zu erwähnen, dass ich DataSet-Objekt verwenden musste. Neben dem 1. Kommentar hat es schon geholfen und es automatisiert Tischfüllarbeiten. – kasixLv

Verwandte Themen