2011-05-28 46 views
1

I a此代码的参数ordial = 1错误。 任何人都可以在这种情况下解释它吗? dbCon是正确的,因为我可以将数据插入数据库,只是试着如何让它返回不。SqlCeDataReader参数ordinal = 1

   if (dbCon.State == ConnectionState.Closed) 
      { 
       dbCon.Open(); ; 
      } 

      SqlCeParameter vetidfromdropbox = new SqlCeParameter("@vetidfromdropbox", SqlDbType.Int); 
      vetidfromdropbox.Value = 2; 

      SqlCeCommand mySQLCommand = new SqlCeCommand("SELECT * FROM vets WHERE vetID = @vetidfromdropbox", dbCon); 

      SqlCeDataReader rdata = mySQLCommand.ExecuteReader(); 


      if(rdata.Read()){ 

        editNameTextbox.Text = (String)rdata["vetName"]; 
        editSurnameTextbox.Text = (String)rdata["vetSurname"]; 
        editCompanyNameTextbox.Text = (String)rdata["vetCompanyName"]; 
        editPractiseAddTextBox.Text = (String)rdata["vetPractiseAddress"]; 
        editMobileTextbox.Text = (String)rdata["vetMobile"]; 
        editOtherTextbox.Text = (String)rdata["vetOther"]; 
        editNotesTextbox.Text = (String)rdata["vetNotes"]; 

       }else{ 
         MessageBox.Show(" There has been an error with Read() ");        
       } 



      if (dbCon.State == ConnectionState.Open) 
      { 
       dbCon.Close(); 
      } 

回答

1

您没有添加参数到您的SQL命令:

var vetidfromdropbox = new SqlCeParameter("@vetidfromdropbox", SqlDbType.Int); 
vetidfromdropbox.Value = 2; 

var mySQLCommand = new SqlCeCommand(
    "SELECT * FROM vets WHERE vetID = @vetidfromdropbox", dbCon); 
mySQLCommand.Parameters.Add(vetidfromdropbox); 

您可以使用AddWithValue简化的语法:

var mySQLCommand = new SqlCommand(
    "SELECT * FROM vets WHERE vetID = @vetidfromdropbox", dbCon); 
mySQLCommand.Parameters.AddWithValue("vetidfromdropbox", 2); 

附注:上使用using你的sql连接和命令来保证处理和简化代码。