1

この種の問題については、スタック オーバーフローを検索しました。しかし、これに関していくつかの同様の問題を見つけましたが、別の解決策を示しています。

重複せずにデータグリッドビューにデータを表示したいと思います。どうやって複製したのかわからない。

conn.Open();
            query = "SELECT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,Books.ISBN from Books,Authors";
            cmd = new SqlCommand(query, conn);
            dr = cmd.ExecuteReader();
            
            while (dr.Read())               
            {
                dataGridView1.Rows.Clear();
               dataGridView1.Rows.Add(dr[0].ToString(), dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString());
            }
            cmd.Dispose();
            conn.Close();

私がしたいこと:

ブック ID | 書籍名 | 等..

100001 | 社会学 | 社会学 など..
100002 | 歴史 | 等..

これは毎回表示されるデータグリッドです

ブック ID | 書籍名 | 等..

100001 | 社会学 | 社会学 など..
100002 | 歴史 | など..
100001 | 社会学 | 社会学 など..
100002 | 歴史 | 等..

4

3 に答える 3

2

DISTINCTクエリを変更して、データベースからレコードを取得し、それらをバインドしますdatagridview

 query = "SELECT DISTINCT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,
          Books.ISBN from Books,Authors";

注: このクエリは、値が異なる列がある場合、行を区別します。したがって、どの列の値を区別し、グリッドに表示するかはあなた次第です。

JOINもう1つ、このように可能であればデカルト積の代わりに使用してください

query = "SELECT DISTINCT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,
         Books.ISBN from Books 
         LEFT OUTER JOIN Authors on Books.AuthorId=Author.AuthorId";

編集:バインディングのためにこれを試してください

using(SqlReader reader = cmd.ExecuteReader() )
     {
        if (reader.HasRows)
        {  
            DataTable dt = new DataTable();
            dt.Load(reader);
            dataGridView1.DataSource = dt;
        }
     }
于 2013-04-08T15:00:08.240 に答える
2

これを試して

conn.Open();
query = "SELECT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,Books.ISBN from Books,Authors";
cmd = new SqlCommand(query, conn);

SqlDataAdapter da = new SqlDataAdapter(cmd);

dataGridView1.Clear();

da.Fill(dataGridView1);

cmd.Dispose();
conn.Close();

これが完全に正しいかどうかはわかりませんが、役立つかもしれません。

于 2013-04-08T15:05:39.927 に答える
1

DISTINCT を使用するようにクエリを変更する必要があります。これにより重複が削除されます。

SELECT DISTINCT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,Books.ISBN from Books,Authors
于 2013-04-08T15:38:17.480 に答える