Ошибка при обновлении SQL из таблицы данных с помощью adapter.update()

На основании ответов до сих пор кажется, что я неправильно создаю параметры и неправильно передаю значения. Я хочу обновить таблицу SQL из DataTable (таблица данных была заполнена из таблицы SQL, а имена столбцов одинаковы). Когда я создал параметр, я подумал, что 2-й аргумент представляет столбец с данными. Как мне настроить это, когда значение datatable «DWFieldScale» передается в столбец SQL DWFieldScale??? (То же самое для любого другого параметра, который я создал)

command.Parameters.AddWithValue("@DWFieldScale", "DWFieldScale");

Я получаю исключение SQL, когда вызывается adapter.update(), потому что я не понимаю, как правильно настроить адаптер для цели, указанной в заголовке темы. Я работаю с C# всего несколько месяцев, так что я еще очень зеленый.

Во всяком случае, я перепробовал дюжину вещей и дошел до того, что я «МОГУ БЫТЬ» на правильном пути, но получаю «Не могу преобразовать NVARCHAR в INT». Что меня беспокоит в этом, так это то, что это DataGridView, привязанный к datatable, где столбец имеет тип INT. (В SQL столбец имеет значение NULL и есть нули)

  1. Откуда берется NVARCHAR?
  2. Если NVARCHAR исходит из DataGridView, почему он не генерируется автоматически с соответствующими типами?
  3. Где я могу сделать преобразование, чтобы мой da.Update(tblvAttributes); командная работа? Я пробовал несколько вещей при определении параметров, но, должно быть, неправильно держал челюсть. ПОМОЩЬ

Мой код привязки:

private void tvVX130_AfterSelect(object sender, TreeViewEventArgs e)
        {
            string t = tvVX130.SelectedNode.Text;
            BindingSource bs1 = new BindingSource();
            bs1.PositionChanged += bindingSource1_PositionChanged;
            bs1.DataSource = tblvAttributes;
            dgvVX130.DataSource = bs1;
            string dwTN = tvVX130.SelectedNode.Text.Substring(0, tvVX130.SelectedNode.Text.IndexOf("  -  "));
            bs1.Filter = "DWPhysicalTableName = '" + dwTN +  "' AND DWPhysicalSchemaName = '" + t.Substring(t.IndexOf("  -  ") + 5) + "'";
            dgvVX130.DataSource = bs1;

      public static SqlDataAdapter CreateSQLAdapter(SqlConnection vx130)
    {
        SqlDataAdapter da = new SqlDataAdapter();

       command = new SqlCommand(
            "UPDATE [Meta].[AttributeMap] "+
            "SET DatabaseName = @DatabaseName, DWPhysicalSchemaName = @DWPhysicalSchemaName, " +
            "DWPhysicalTableName=@DWPhysicalTableName, DWFieldName=@DWFieldName, DataDomain=@DataDomain," +
            "DWFieldDataType=@DWFieldDataType, DWFieldLength=@DWFieldLength, DWFieldScale=@DWFieldScale," +
            "SourceAttributeSID=@SourceAttributeSID  " +

            "WHERE DWPhysicalSchemaName = @DWPhysicalSchemaName and DWPhysicalTableName= @DWPhysicalTableName and DWFieldName=@DWFieldName", vx130);

        command.Parameters.AddWithValue("@DatabaseName", "DatabaseName");
        command.Parameters.AddWithValue("@DWPhysicalSchemaName", "DWPhysicalSchemaName");
        command.Parameters.AddWithValue("@DWPhysicalTableName", "DWPhysicalTableName");
        command.Parameters.AddWithValue("@DWFieldName", "DWFieldName");
        command.Parameters.AddWithValue("@DWFieldDataType", "DWFieldDataType");
        command.Parameters.AddWithValue("@DWFieldLength", "DWFieldLength");
        //command.Parameters.AddWithValue("@DWFieldScale",  "DWFieldScale");  gives can't convert NVARCHAR to INT

        //if (!String.IsNullOrWhiteSpace("DWFieldScale"))       Doesn't recognize "DWFieldScale" as column
        //    command.Parameters.AddWithValue("@DWFieldScale", "DWFieldScale");
        //else
        //    command.Parameters.AddWithValue("@DWFieldScale", DBNull.Value);

        //command.Parameters.Add("@DWFieldScale", SqlDbType.Int);
        //command.Parameters["@DWFieldScale"].Value = "DWFieldScale";  Doesn't recognize "DWFieldScale" as column

        //command.Parameters.AddWithValue("@DWFieldScale", int.Parse("DWFieldScale".ToString()));   gives input incorrect format

        command.Parameters.AddWithValue("@SourceAttributeSID",  "SourceAttributeSID");  //this is also integer

        da.UpdateCommand = command;

person Thom Ash    schedule 08.12.2014    source источник
comment
Эта строка: command.Parameters.AddWithValue(@DWFieldScale, DWFieldScale); выдаст ошибку, если DWFieldScale является целым числом, потому что вы передаете в качестве значения поля строку DWFieldScale. Идея команды command.Parameters — это элемент управления для выполнения любого необходимого вам преобразования.   -  person Jauch    schedule 08.12.2014
comment
Когда вы найдете ответы полезными, проголосуйте за них. И не забудьте выбрать ответ, который решил ваши проблемы или сомнения. Это поможет другим пользователям и тем, кто готов помочь :)   -  person Jauch    schedule 08.12.2014


Ответы (4)


Следующая строка выдаст ошибку, если поле базы данных имеет значение «int»:

command.Parameters.AddWithValue("@DWFieldScale", "DWFieldScale"); 

Это выдаст ошибку, потому что вы передаете в качестве значения поля строку «DWFieldScale». Идея команды command.Parameters — это элемент управления для выполнения любого необходимого вам преобразования.

Видеть это:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue%28v=vs.110%29.aspx

NVARCHAR — это тип, который, по мнению соединения, вы пытаетесь передать параметру. Это тип поля базы данных.

Кроме того, следующая строка выглядит странно:

if (!String.IsNullOrWhiteSpace("DWFieldScale"))

String.IsNullOrWhiteSpace предназначался для использования с «переменными». Вы передаете постоянную строку. Результат функции всегда будет истинным, поскольку ЕСТЬ строка, а результат if всегда будет ЛОЖНЫМ, так как вы отрицаете результат функции.

И, в конце концов, эти две строки не будут работать по той же причине в начале, вы устанавливаете параметр int, но передаете строку в качестве значения:

command.Parameters.Add("@DWFieldScale", SqlDbType.Int);
command.Parameters["@DWFieldScale"].Value = "DWFieldScale";

Правильный способ использования параметров больше похож на этот:

command.Parameters.Add("@DWFieldScale", SqlDbType.Int);
command.Parameters["@DWFieldScale"].Value = 10;

Итак, вы должны передать ЗНАЧЕНИЕ, может быть константа, переменная того же типа, результат функции того же типа и т. д. Но на самом деле это должно быть значение, которое вы хотите получить в команде sql.

Но это когда вы хотите ВЫПОЛНИТЬ команду. Если вы привязываете это к сетке данных или что-то в этом роде, просто ДОБАВЬТЕ параметры. Не передавайте значения, так как они будут установлены при обновлении сетки данных.

Итак, просто используйте такие строки:

command.Parameters.Add("@DWFieldScale", SqlDbType.Int);

И пусть представление позаботится о значениях для вас.

Здесь есть хороший пример того, как использовать DAtaSet (в памяти)

http://msdn.microsoft.com/en-us/library/system.data.dataset%28v=vs.110%29.aspx

Пример для оператора «Выбрать», но вы поняли идею :)

А вот немного информации о SQLDataAdapter: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter%28v=vs.110%29.aspx

person Jauch    schedule 08.12.2014
comment
Похоже, моя основная проблема в том, что я не передаю то, что, как мне кажется, я передаю или чего хочу. Мое намерение состоит в том, чтобы передать столбцы из моей таблицы данных в мою таблицу SQL. Как я могу это сделать? - person Thom Ash; 08.12.2014
comment
Я плохо понимаю... Вы хотите ОБНОВИТЬ свою базу данных, верно? Итак, вы на полпути. Основная проблема в том, что вам нужно передать ЗНАЧЕНИЯ в параметры. Вы просто передаете строки, которые на самом деле являются именами полей. Я приведу пример в ответ о том, как это сделать. - person Jauch; 08.12.2014
comment
О, спасибо! 2 дня голову ломаю. Я пока не очень хорошо разбираюсь в C#. Вы прекрасно понимаете! - person Thom Ash; 08.12.2014
comment
Никаких проблем :) Вам, вероятно, придется привязать свой SQLDataAdapter к DataGridView (я не видел кода для этого в коде, который вы показали) - person Jauch; 08.12.2014
comment
Примеры того, что вы хотите сделать: support.microsoft.com/kb/308507 (красиво старый, но я думаю, что все еще в силе) - person Jauch; 08.12.2014
comment
@ThomAsh, просто посмотри сюда. Это очень хороший пример того, как сделать то, что, как мне кажется, вы хотите сделать: nareshkamuni.blogspot.pt/2012/04/ - person Jauch; 08.12.2014
comment
Я прочитал эту статью за последние несколько дней, и это была одна из первых вещей, которые я попробовал. (безуспешно). Думаю, я снова не держал челюсть правильно, потому что я только что повторно подал заявку и добился успеха. - person Thom Ash; 08.12.2014

Для следующего начинающего программиста это мое полное решение для автоматического обновления базы данных/таблицы SQL при редактировании DataGridView, связанного с DataTable:

Bind: (связывает события dgView, dTable и PositionChange)

private void tvVX130_AfterSelect(object sender, TreeViewEventArgs e)
        {
            string t = tvVX130.SelectedNode.Text;
            BindingSource bs1 = new BindingSource();
            bs1.PositionChanged += bindingSource1_PositionChanged;
            bs1.DataSource = tblvAttributes;
            dgvVX130.DataSource = bs1;
            string dwTN = tvVX130.SelectedNode.Text.Substring(0, tvVX130.SelectedNode.Text.IndexOf("  -  "));
            bs1.Filter = "DWPhysicalTableName = '" + dwTN +  "' AND DWPhysicalSchemaName = '" + t.Substring(t.IndexOf("  -  ") + 5) + "'";
            dgvVX130.DataSource = bs1;
        }

Создайте событие для выполнения обновления адаптера: private void bindingSource1_PositionChanged (отправитель объекта, EventArgs e) { var config = ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.None); AppSettingsSection appSettingSection = (AppSettingsSection)config.GetSection("cbSettings"); SqlConnection vx130 = новое SqlConnection(appSettingSection.Settings[cbRegion.SelectedItem.ToString()].Value); SqlDataAdapter da = CreateSQLAdapter(vx130); da.Update(tblvAttributes); }

Настройте SQL-адаптер: (там, где все полезности. Это также многословно. Альтернативой может быть перефразирование операторов для вызова хранимой процедуры SQL. Я этого не делал.)

public static SqlDataAdapter CreateSQLAdapter(SqlConnection vx130)
        {
            SqlDataAdapter da = new SqlDataAdapter();

            // Create the SelectCommand.
            SqlCommand command = new SqlCommand("Select DatabaseName, DWPhysicalSchemaName, DWPhysicalTableName, " + 
                "DWFieldName ,DataDomain, DWFieldDataType, DWFieldLength, DWFieldScale, SourceAttributeSID, "+
                "ResolvedValue, PointedToField, MapComments, PrimaryKeyEntitySID, SpecialHandlingFlag, "+
                "DWFieldTechnicalDescription, BuildStatus from meta.attributemap", vx130);

            da.SelectCommand = command;

            // Create the InsertCommand.
            command = new SqlCommand(
             "Insert Into [Meta].[AttributeMap] " +
                "(DatabaseName, DWPhysicalSchemaName, DWPhysicalTableName, " +
                "DWFieldName ,DataDomain, DWFieldDataType, DWFieldLength, DWFieldScale, SourceAttributeSID, " +
                "ResolvedValue, PointedToField, MapComments, PrimaryKeyEntitySID, SpecialHandlingFlag, " +
                "DWFieldTechnicalDescription, BuildStatus ) " +


             "Values (@DatabaseName, @DWPhysicalSchemaName, @DWPhysicalTableName, " +
                "@DWFieldName ,@DataDomain, @DWFieldDataType, @DWFieldLength, @DWFieldScale, @SourceAttributeSID, " +
                "@ResolvedValue, @PointedToField, @MapComments, @PrimaryKeyEntitySID, @SpecialHandlingFlag, " +
                "@DWFieldTechnicalDescription, @BuildStatus)" , vx130);

            // Add the parameters for the InsertCommand.
            command.Parameters.Add(new SqlParameter("@DatabaseName", SqlDbType.VarChar));
            command.Parameters["@DatabaseName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DatabaseName"].SourceColumn = "DatabaseName";

            command.Parameters.Add(new SqlParameter("@DWPhysicalSchemaName", SqlDbType.VarChar));
            command.Parameters["@DWPhysicalSchemaName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWPhysicalSchemaName"].SourceColumn = "DWPhysicalSchemaName";

            command.Parameters.Add(new SqlParameter("@DWPhysicalTableName", SqlDbType.VarChar));
            command.Parameters["@DWPhysicalTableName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWPhysicalTableName"].SourceColumn = "DWPhysicalTableName";

            command.Parameters.Add(new SqlParameter("@DWFieldName", SqlDbType.VarChar));
            command.Parameters["@DWFieldName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldName"].SourceColumn = "DWFieldName";

            command.Parameters.Add(new SqlParameter("@DataDomain", SqlDbType.VarChar));
            command.Parameters["@DataDomain"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DataDomain"].SourceColumn = "DataDomain";

            command.Parameters.Add(new SqlParameter("@DWFieldDataType", SqlDbType.VarChar));
            command.Parameters["@DWFieldDataType"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldDataType"].SourceColumn = "DWFieldDataType";

            command.Parameters.Add(new SqlParameter("@DWFieldLength", SqlDbType.VarChar));
            command.Parameters["@DWFieldLength"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldLength"].SourceColumn = "DWFieldLength";

            command.Parameters.Add(new SqlParameter("@DWFieldScale", SqlDbType.Int));
            command.Parameters["@DWFieldScale"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldScale"].SourceColumn = "DWFieldScale";

            command.Parameters.Add(new SqlParameter("@SourceAttributeSID", SqlDbType.Int));
            command.Parameters["@SourceAttributeSID"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@SourceAttributeSID"].SourceColumn = "SourceAttributeSID";

            command.Parameters.Add(new SqlParameter("@ResolvedValue", SqlDbType.VarChar));
            command.Parameters["@ResolvedValue"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@ResolvedValue"].SourceColumn = "ResolvedValue";

            command.Parameters.Add(new SqlParameter("@PointedToField", SqlDbType.VarChar));
            command.Parameters["@PointedToField"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@PointedToField"].SourceColumn = "PointedToField";

            command.Parameters.Add(new SqlParameter("@MapComments", SqlDbType.VarChar));
            command.Parameters["@MapComments"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@MapComments"].SourceColumn = "MapComments";

            command.Parameters.Add(new SqlParameter("@PrimaryKeyEntitySID", SqlDbType.Int));
            command.Parameters["@PrimaryKeyEntitySID"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@PrimaryKeyEntitySID"].SourceColumn = "PrimaryKeyEntitySID";

            command.Parameters.Add(new SqlParameter("@SpecialHandlingFlag", SqlDbType.VarChar));
            command.Parameters["@SpecialHandlingFlag"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@SpecialHandlingFlag"].SourceColumn = "SpecialHandlingFlag";

            command.Parameters.Add(new SqlParameter("@DWFieldTechnicalDescription", SqlDbType.VarChar));
            command.Parameters["@DWFieldTechnicalDescription"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldTechnicalDescription"].SourceColumn = "DWFieldTechnicalDescription";

            command.Parameters.Add(new SqlParameter("@BuildStatus", SqlDbType.VarChar));
            command.Parameters["@BuildStatus"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@BuildStatus"].SourceColumn = "BuildStatus";

            da.InsertCommand = command;

            // Create the UpdateCommand.
            command = new SqlCommand(
                "UPDATE [Meta].[AttributeMap] "+
                "SET DatabaseName = @DatabaseName, DWPhysicalSchemaName = @DWPhysicalSchemaName, " +
                "DWPhysicalTableName=@DWPhysicalTableName, DWFieldName=@DWFieldName, DataDomain=@DataDomain," +
                "DWFieldDataType=@DWFieldDataType, DWFieldLength=@DWFieldLength, DWFieldScale=@DWFieldScale," +
                "SourceAttributeSID=@SourceAttributeSID, ResolvedValue=@ResolvedValue, @PointedToField=@PointedToField," +
                "MapComments=@MapComments, PrimaryKeyEntitySID=@PrimaryKeyEntitySID, SpecialHandlingFlag=@SpecialHandlingFlag," +
                "DWFieldTechnicalDescription=@DWFieldTechnicalDescription, BuildStatus=@BuildStatus  " +

                "WHERE DWPhysicalSchemaName = @DWPhysicalSchemaName and DWPhysicalTableName= @DWPhysicalTableName and DWFieldName=@DWFieldName", vx130);

            command.Parameters.Add(new SqlParameter("@DatabaseName", SqlDbType.VarChar));
            command.Parameters["@DatabaseName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DatabaseName"].SourceColumn = "DatabaseName";

            command.Parameters.Add(new SqlParameter("@DWPhysicalSchemaName", SqlDbType.VarChar));
            command.Parameters["@DWPhysicalSchemaName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWPhysicalSchemaName"].SourceColumn = "DWPhysicalSchemaName";

            command.Parameters.Add(new SqlParameter("@DWPhysicalTableName", SqlDbType.VarChar));
            command.Parameters["@DWPhysicalTableName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWPhysicalTableName"].SourceColumn = "DWPhysicalTableName";

            command.Parameters.Add(new SqlParameter("@DWFieldName", SqlDbType.VarChar));
            command.Parameters["@DWFieldName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldName"].SourceColumn = "DWFieldName";

            command.Parameters.Add(new SqlParameter("@DataDomain", SqlDbType.VarChar));
            command.Parameters["@DataDomain"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DataDomain"].SourceColumn = "DataDomain";

            command.Parameters.Add(new SqlParameter("@DWFieldDataType", SqlDbType.VarChar));
            command.Parameters["@DWFieldDataType"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldDataType"].SourceColumn = "DWFieldDataType";

            command.Parameters.Add(new SqlParameter("@DWFieldLength", SqlDbType.VarChar));
            command.Parameters["@DWFieldLength"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldLength"].SourceColumn = "DWFieldLength";

            command.Parameters.Add(new SqlParameter("@DWFieldScale", SqlDbType.Int));
            command.Parameters["@DWFieldScale"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldScale"].SourceColumn = "DWFieldScale";

            command.Parameters.Add(new SqlParameter("@SourceAttributeSID", SqlDbType.Int));
            command.Parameters["@SourceAttributeSID"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@SourceAttributeSID"].SourceColumn = "SourceAttributeSID";

            command.Parameters.Add(new SqlParameter("@ResolvedValue", SqlDbType.VarChar));
            command.Parameters["@ResolvedValue"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@ResolvedValue"].SourceColumn = "ResolvedValue";

            command.Parameters.Add(new SqlParameter("@PointedToField", SqlDbType.VarChar));
            command.Parameters["@PointedToField"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@PointedToField"].SourceColumn = "PointedToField";

            command.Parameters.Add(new SqlParameter("@MapComments", SqlDbType.VarChar));
            command.Parameters["@MapComments"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@MapComments"].SourceColumn = "MapComments";

            command.Parameters.Add(new SqlParameter("@PrimaryKeyEntitySID", SqlDbType.Int));
            command.Parameters["@PrimaryKeyEntitySID"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@PrimaryKeyEntitySID"].SourceColumn = "PrimaryKeyEntitySID";

            command.Parameters.Add(new SqlParameter("@SpecialHandlingFlag", SqlDbType.VarChar));
            command.Parameters["@SpecialHandlingFlag"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@SpecialHandlingFlag"].SourceColumn = "SpecialHandlingFlag";

            command.Parameters.Add(new SqlParameter("@DWFieldTechnicalDescription", SqlDbType.VarChar));
            command.Parameters["@DWFieldTechnicalDescription"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldTechnicalDescription"].SourceColumn = "DWFieldTechnicalDescription";

            command.Parameters.Add(new SqlParameter("@BuildStatus", SqlDbType.VarChar));
            command.Parameters["@BuildStatus"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@BuildStatus"].SourceColumn = "BuildStatus";

            da.UpdateCommand = command;

            // Create the DeleteCommand.
            command = new SqlCommand(
                 "delete from vx130.Meta.AttributeMap " +
                    " where DWPhysicalSchemaName =   @DWPhysicalSchemaName  AND " +
                       " DWPhysicalTableName =  @DWPhysicalTableName  AND  DWFieldName = @DWFieldName", vx130);

            // Add the parameters for the DeleteCommand.
            command.Parameters.Add(new SqlParameter("@DWPhysicalSchemaName", SqlDbType.VarChar));
            command.Parameters["@DWPhysicalSchemaName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWPhysicalSchemaName"].SourceColumn = "DWPhysicalSchemaName";

            command.Parameters.Add(new SqlParameter("@DWPhysicalTableName", SqlDbType.VarChar));
            command.Parameters["@DWPhysicalTableName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWPhysicalTableName"].SourceColumn = "DWPhysicalTableName";

            command.Parameters.Add(new SqlParameter("@DWFieldName", SqlDbType.VarChar));
            command.Parameters["@DWFieldName"].SourceVersion = DataRowVersion.Current;
            command.Parameters["@DWFieldName"].SourceColumn = "DWFieldName";

            da.DeleteCommand = command;

            return da;
        }
    }

}
person Thom Ash    schedule 08.12.2014

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

command.Parameters.AddWithValue("@DatabaseName", "DatabaseName");
    command.Parameters.AddWithValue("@DWPhysicalSchemaName", "DWPhysicalSchemaName");
    command.Parameters.AddWithValue("@DWPhysicalTableName", "DWPhysicalTableName");
    command.Parameters.AddWithValue("@DWFieldName", "DWFieldName");
    command.Parameters.AddWithValue("@DWFieldDataType", "DWFieldDataType");
    command.Parameters.AddWithValue("@DWFieldLength", "DWFieldLength");
person Phenix_yu    schedule 08.12.2014

в двух строках вашего кода, я думаю, вы присваиваете значения String параметрам int. Я имею в виду следующее:

command.Parameters.AddWithValue("@DWFieldLength", "DWFieldLength");
command.Parameters.AddWithValue("@SourceAttributeSID",  "SourceAttributeSID"); 

попробуйте изменить значение ваших параметров на int, также вам нужно изменить текст команды и поместить параметры varchar внутри одиночных меток qoto; однако для этого типа операций с базой данных лучше использовать хранимые процедуры вместо простого текста.

person null    schedule 08.12.2014