вставить данные в таблицу на основе другой таблицы C # - PullRequest
1 голос
/ 27 ноября 2011

Я написал некоторый код, который берет некоторые значения из одной таблицы и вставляет в другую таблицу эти значения (не только эти значения, но и эти значения (это значения = значения из таблицы))

и я получаю эту ошибку:

System.Data.OleDb.OleDbException (0x80040E10): значение не задано для одного или нескольких обязательных параметров.

вот кодЯ не знаю, что я пропустил.

string selectedItem = comboBox1.SelectedItem.ToString();
Codons cdn = new Codons(selectedItem);
string codon1;
int index;

if (this.i != this.counter)
{
  //take from the DataBase the matching codonsCodon1 to codonsFullName
  codon1 = cdn.GetCodon1();

  //take the serialnumber of the last protein
  string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
         "Data Source=C:\\Projects_2012\\Project_Noam\\Access\\myProject.accdb";
  OleDbConnection conn = new OleDbConnection(connectionString);
  conn.Open();
  string last= "SELECT proInfoSerialNum FROM tblProInfo WHERE proInfoScienceName = "+this.name ;
  OleDbCommand getSerial = new OleDbCommand(last, conn);
  OleDbDataReader dr = getSerial.ExecuteReader();
  dr.Read();
  index = dr.GetInt32(0);

  //add the amino acid to tblOrderAA
  using (OleDbConnection connection = new OleDbConnection(connectionString))
  {
    string insertCommand = "INSERT INTO tblOrderAA(orderAASerialPro, orderAACodon1) "
           + " values (?, ?)";
    using (OleDbCommand command = new OleDbCommand(insertCommand, connection))
    {
      connection.Open();
      command.Parameters.AddWithValue("orderAASerialPro", index);
      command.Parameters.AddWithValue("orderAACodon1", codon1);
      command.ExecuteNonQuery();
    }
  }
}

РЕДАКТИРОВАТЬ: я помещаю окно сообщения после этой строки:

index = dr.GetInt32(0);

, чтобы увидеть, в чем проблема, и я получаюошибка до этого.Я не вижу окно сообщения

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Ваша команда SELECT содержит синтаксическую ошибку, поскольку вы не заключили ее в кавычки.

Измените это:

string last = "SELECT proInfoSerialNum FROM tblProInfo WHERE proInfoScienceName = "+this.name ;
OleDbCommand getSerial = new OleDbCommand(last, conn);
OleDbDataReader dr = getSerial.ExecuteReader();

на

string last = "SELECT proInfoSerialNum FROM tblProInfo WHERE proInfoScienceName = ?";
OleDbCommand getSerial = new OleDbCommand(last, conn);
getSerial.Parameters.AddWithValue("?", this.name);
OleDbDataReader dr = getSerial.ExecuteReader();
0 голосов
/ 27 ноября 2011

Этот код является примером здесь :

string SqlString = "Insert Into Contacts (FirstName, LastName) Values (?,?)";

using (OleDbConnection conn = new OleDbConnection(ConnString))
{
    using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
    {
       cmd.CommandType = CommandType.Text;
       cmd.Parameters.AddWithValue("FirstName", txtFirstName.Text);
       cmd.Parameters.AddWithValue("LastName", txtLastName.Text);
       conn.Open();
       cmd.ExecuteNonQuery();
    }
}

Попробуйте сделать так же, как в примере.

...