for (int i = 0; i < listView1.Columns.Count; i++)
                {
                    listView1.Columns[i].Width = listView1.Width / listView1.Columns.Count;
                }
                cn.Open();
                SqlCommand cmd = new SqlCommand(" SELECT  海贼名 from d where 海贼名= '" + textBox1.Text.Trim() + "'", cn);
                SqlDataReader read1 = cmd.ExecuteReader();
                listView1.Items.Clear();
                ListViewItem.ListViewSubItem lvii; ;
                ListViewItem lvi = null;
                
                while (read1.Read())
                {                    lvi = new ListViewItem();
                    for (int m = 1; m <  read1.FieldCount - 2; m++)
                    {                        lvii = new ListViewItem.ListViewSubItem();
                        lvi.Text = read1.GetString(0);
                        lvii.Text = read1.GetString(m);
                        lvi.SubItems.Add(lvii);                    }
                    lvii = new ListViewItem.ListViewSubItem();
                    lvii.Text = read1.GetInt32(4).ToString();
                    lvi.SubItems.Add(lvii);
                    lvii = new ListViewItem.ListViewSubItem();
                    lvii.Text = read1.GetString(5);
                    lvi.SubItems.Add(lvii);
                    listView1.Items.Add(lvi);
                }
                if (listView1.Items.Count == 0)
                {
                    MessageBox.Show("没有数据");
                   
                }
                else
                {
                    MessageBox.Show("aa");
                }
                read1.Close();
                cn.Close();
                textBox1.Text = "";输入数据后显示超出索引大小,我该怎么改?

解决方案 »

  1.   

    for (int m = 1; m < read1.FieldCount - 2; m++)lz,现在sql的结果里只有1列哦
      

  2.   

    你这代码没法改不知道你想实现什么。重写吧用SqlDataAdapter.Fill()直接绑定DataGridView会简单点。
      

  3.   

    看你的这句:
    SqlCommand cmd = new SqlCommand(" SELECT 海贼名 from d where 海贼名= '" + textBox1.Text.Trim() + "'", cn);你本身取得的表列数就1列,下面你通过DataReader对象的GetString(5)啥的,肯定不行的啦,因为只有GetString(0)SqlCommand cmd = new SqlCommand(" SELECT * from d where 海贼名= '" + textBox1.Text.Trim() + "'", cn);
      

  4.   

    那如果datatime包含在D列表里面,我该怎么办?