0

Customer テーブルから「customer_id」を取得して挿入しようとしています

fare_tariff(tariff_id, customer_id, total_price)

したがって、次のように Customer テーブルから customer_id を取得します。

using (SqlCommand command = new SqlCommand("SELECT customer_id FROM Customer WHERE UserName = '" + username + "' Password = '"+password +"' ", connection))
{
    string cust_id = customer_id.ToString();
    SqlDataReader myReader = command.ExecuteReader();

    if (myReader.Read())
    {
        cust_id = myReader["customer_id"].ToString();
    }

    int c_id = Convert.ToInt32(cust_id);

    myReader.Close();
    custID(c_id);
}

以下のように、customer_id を fare_tariff テーブルに挿入します。

using (SqlCommand command = new SqlCommand("INSERT INTO flight_reservation(tariff_id, customer_id, total_price) VALUES(@val1,@val2,@val3)", connection))
{

    command.Parameters.Add("@val1", SqlDbType.Int).Value = tariff_id;
    command.Parameters.Add("@val2", SqlDbType.Int).Value = customer_id;
    command.Parameters.Add("@val3", SqlDbType.VarChar).Value = total_price.ToString();

    command.ExecuteNonQuery();
}  

customer_id を格納する変数として、customer_id を宣言しました。

問題は次のとおりです。triff_id と total_price は正常に挿入されましたが、customer_id 列はまだ null です。

助けが必要です。

4

1 に答える 1

0

クライアントにデータをフェッチし、行ごとにサーバーに返すと、大きなオーバーヘッドが発生する可能性があります。「挿入/選択」クエリと呼ばれる、同じことを行うより良い方法があります。

  using (SqlCommand command = connection.CreateCommand()) {
    command.CommandText =
      "insert into Flight_Reservation(\n" +
      "            Customer_Id,\n" +
      "            Tariff_Id,\n" +
      "            Total_Price)\n" +
      "     select Customer_Id,\n" +
      "            @prm_Tariff_Id,\n" +
      "            @prm_Total_Price\n" +
      "       from Customer\n" +
      "      where (UserName = @prm_UserName)\n" + 
      "            (Password = @prm_Password)"; 

    command.Parameters.Add("@prm_Tariff_Id", SqlDbType.VarChar, 80).Value = tariff_id;
    command.Parameters.Add("@prm_Total_Price", SqlDbType.VarChar, 80).Value = total_price.ToString();
    command.Parameters.Add("@prm_UserName", SqlDbType.VarChar, 80).Value = username;
    command.Parameters.Add("@prm_Password", SqlDbType.VarChar, 80).Value = password;

    command.ExecuteNonQuery();
  }
于 2013-04-27T15:48:30.210 に答える