2014-10-12 19 views
-2

我想使用組合框(選擇名稱)編寫客戶端查詢(全名,年齡,電話,圖像等),並自動希望數據顯示在文本框中。它的工作原理確定,除了圖像,並拋出一個錯誤:擔心代碼!我正在使用C#和SQL Server 2008

There is no row at position 0

我的代碼:

//combobox load 
private void cbmodificar_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    SqlConnection conn = new SqlConnection("Data Source=MELVIN-PC\\SQLEXPRESS; Initial Catalog= World_Computers; Integrated Security=True;"); 

    string query = "select * from agregar_cliente where Nombre='" + cbmodificar.Text + "'"; 
    SqlCommand comando = new SqlCommand(query, conn); 

    conn.Open(); 

    SqlDataReader leer = comando.ExecuteReader(); 

    if (leer.Read() == true) 
    { 
     idclienteTextBox.Text = leer["idcliente"].ToString(); 
     txtnombre.Text = leer["Nombre"].ToString(); 
     txtapellido.Text = leer["Apellido"].ToString(); 
     txtcedula.Text = leer["Cedula"].ToString(); 
     txtedad.Text = leer["Edad"].ToString(); 
     txttelefono.Text = leer["Teléfono"].ToString(); 
     txtdireccion.Text = leer["Dirreción"].ToString(); 
     txtcorreo.Text = leer["Correo"].ToString(); 
     cbestado.Text = leer["Estado"].ToString(); 
     cbsexo.Text = leer["Sexo"].ToString(); 
    } 
    else 
    { 
     idclienteTextBox.Text=""; 
     txtnombre.Text=""; 
     txtapellido.Text=""; 
     txtcedula.Text=""; 
     txtedad.Text=""; 
     txttelefono.Text=""; 
     txtdireccion.Text=""; 
     txtcorreo.Text=""; 
     cbestado.Text=""; 
     cbsexo.Text = ""; 
    } 

    leer.Close(); 
    DataSet ds = new DataSet("agregar_cliente"); 
    SqlDataAdapter dp = new SqlDataAdapter(query,conn); 
    byte[] misdatos = new byte[0]; 

    dp.Fill(ds, "agregar_cliente"); 

    DataRow myrow = ds.Tables["agregar_cliente"].Rows[0]; //<<< i dont know// 
    misdatos = (byte[])myrow["Imagen"]; 

    MemoryStream ms = new MemoryStream(misdatos); 

    imagenPictureBox.Image = Image.FromStream(ms); 
} 
+0

試這個:if(leer .HasRows) {while(leer.Read()) idclienteTextBox.Text = leer [「idcliente」]。 txtnombre.Text = leer [「Nombre」]。ToString(); txtapellido.Text = leer [「Apellido」]。ToString(); txtcedula.Text = leer [「Cedula」]。ToString(); } dr.Close(); } – 2014-10-12 06:04:43

回答

1

您需要檢查是否有您要訪問的行,

if (ds.Tables["agregar_cliente"].Rows.Count > 0) 
{ 
DataRow myrow = ds.Tables["agregar_cliente"].Rows[0]; 

...... 
} 
+0

對不起,但即時新在這裏,而不是說這麼多英語! – 2014-10-13 22:07:22

相關問題