вставить значение в datatable и передать его в метод - PullRequest
0 голосов
/ 22 сентября 2010

Я просто использую этот код, чтобы вставить значение в datatable и передать эту таблицу в метод смотреть код ---

public class RoomBO
{
    DataTable dt;

    RoomDal objRoom = new RoomDal();

    public int insert(int room,string bedType, int bed, int charge)
    {
        //adds the details of the new room
        dt = new DataTable();
        dt.Columns.Add(new DataColumn("Column1"));
        dt.Columns.Add(new DataColumn("Column2"));
        dt.Columns.Add(new DataColumn("Column3"));
        dt.Columns.Add(new DataColumn("Column4"));

        DataRow dr;

        dr = dt.NewRow();
        dr["Column1"] = room;
        dr["Column2"] = bedType;
        dr["Column3"] = bed;
        dr["Column4"] = charge;
        objRoom.Save(dt);
        return 1;
    }

**** на уровне доступа к данным ****

public int Save(DataTable dataTable)     //adds the details of the new room
{
    ada = new SqlDataAdapter("room_insert", con);
    //DataRow r= dataTable.NewRow();

    ada.SelectCommand.CommandType = CommandType.StoredProcedure;
    ada.SelectCommand.Parameters.AddWithValue("@room_no",
        Convert.ToInt32(dataTable.Rows[0][0]));
    ada.SelectCommand.Parameters.AddWithValue("@room_type",
        Convert.ToString(dataTable.Rows[0][1].ToString()));
    ada.SelectCommand.Parameters.AddWithValue("@no_bed",
        Convert.ToInt32(dataTable.Rows[0][2]));
    ada.SelectCommand.Parameters.AddWithValue("@charge",
        Convert.ToInt32(dataTable.Rows[0][3]));
    ds = new DataSet();
    ada.Fill(ds);

    return -1; 
}

Я не получаю никакой ошибки, но значение не вставлено в мою базу данных

Ответы [ 2 ]

0 голосов
/ 23 сентября 2010

Я провел еще одно исследование: это не так легко ...

Подробнее см. http://support.microsoft.com/kb/308507. Вам нужно указать InsertCommand и использовать ada.Update.

Насколько я понимаю, DataAdapter всегда ссылается на один и тот же DataSet. Я думаю, что будет сложно обмануть DataAdapter для корректной работы ...

Почему вы вообще хотите использовать DataAdaper (так как вы не используете его для извлеченного DataSet?

Вы могли бы просто

SqlCommand cmd = new SqlCommand( "room_insert( @room_no, @room_type, @no_bed, @charge )" );

cmd.Parameters.Add("@room_no", <datatype> ).Value = ...

return 1 == cmd.ExecuteNonQuery();

НТН

Mario

0 голосов
/ 23 сентября 2010

Для слоя данных:

Попробуйте изменить на

ada = new SqlAdapter( "room_insert( @room_no, @room_type, @no_bed, @charge )" );

Проверка ctor для SqlAdapter говорит:

   public SqlDataAdapter (
        SqlCommand selectCommand
    )

Таким образом, команда должна быть выполнена.

hth

Марио

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...