2015-08-08 2 views
2

Я хотел бы вставить массив строк в таблицу в PostgreSQL, используя Npgsql в C#. Я написал код ниже, но получаю InvalidCastexception.Вставка символьного массива в postgresql с использованием Npgsql

eventcommand.Parameters.AddWithValue("@participants", NpgsqlDbType.Array).Value = participant.Text; 

где участник является текстовым полем, а команда eventcommand - NpgsqlCommand.

ответ

2

Вы звоните AddWithValue, но не указали значение - вы предоставляете тип. Кроме того, вы не предоставляете массив - вы просто предоставляете одну строку. Я подозреваю, что вы просто хотите:

command.Parameters.Add("@participants", NpgsqlDbType.Array | NpgsqlDbType.Text).Value 
    = new[] { participant.Text }; 

Или вы можете разделить participant.Text в массив строк первого, или что-то подобное.

(я настроил типа как в комментариях.)

+0

Следует также отметить, что NpgsqlDbType.Array необходимо побитовое Ored с типом элемента, так NpgsqlDbType.Array | NpgsqlDbType.Text для массива строк –

+0

@Shay: Спасибо, исправлено. –

+0

@JonSkeet & & Shay: Спасибо большое, ребята ... –

Смежные вопросы