C # SqlParameters Short Hand

Я беру данные, которые находятся в Списке из объектов записи , и помещаю их содержимое в базу данных:

// Processes a Record and adds it to the database
public bool addRecord(SqlConnection db, List<Record> recordsToAdd)
{
    using (SqlCommand command = db.CreateCommand())
    {
        foreach (Record record in recordsToAdd)
        {
            // Set the query command text
            command.CommandText = @"INSERT INTO SMDGROUP_STPRODMASTER (PRODCODE, TOTFREE, TOTPHYS, ITEMTYPE, PRODESC) VALUES ('@PRODCODE', '@TOTFREE', '@TOTPHYS', '@ITEMTYPE', '@PRODESC')";

            SqlParameter param1 = new SqlParameter("@CURSTAT", record.curstat);
            SqlParameter param2 = new SqlParameter("@ITEMDESC", record.itemdesc);
            SqlParameter param3 = new SqlParameter("@PRODCODE", record.prodcode);
            SqlParameter param4 = new SqlParameter("@TOTFREE", record.totfree);
            SqlParameter param5 = new SqlParameter("@TOTPHYS", record.totphys);
            SqlParameter param6 = new SqlParameter("@ITEMTYPE", record.itemtype);
            SqlParameter param7 = new SqlParameter("@PRODESC", record.proddesc);

            command.Parameters.Add(param1);
            command.Parameters.Add(param2);
            command.Parameters.Add(param3);
            command.Parameters.Add(param4);
            command.Parameters.Add(param5);
            command.Parameters.Add(param6);
            command.Parameters.Add(param7);

            // Execute the query
            command.ExecuteNonQuery();
        }
        return true;
    }
}

Вот мой класс записи:

class Record
{
    public string curstat { get; set; }
    public string itemtype { get; set; }
    public string itemdesc { get; set; }
    public string prodcode { get; set; }
    public string proddesc { get; set; }
    public string totfree { get; set; }
    public string totphys { get; set; }
}

Только из глядя на код, я чувствую, что есть более короткий способ добиться этого.

Но, во-вторых, я даже не уверен, правильно ли я сделал, что значения @PARAMETER заменяются.

Если я просматриваю содержимое команды , она по-прежнему показывает строку запроса с параметрами @ .

Кроме того, я получаю эту ошибку в команде .ExecuteNonQuery () :

Строковые или двоичные данные будут усечены.

Заявление было прекращено.

Итак, мои вопросы:

  • Есть ли более короткий способ задать и добавить несколько параметров в запрос?
  • Что могло вызвать ошибку?
9
задан Luke 16 November 2011 в 08:51
поделиться