String cannot be converted to 'System.Data.SqlClient.SqlCommand'.

tasha klemer
Дата: 24.06.2014 08:25:07
Доброго дня , делю вставку данных в таблицу. В качестве примера использовала
http://msdn.microsoft.com/ru-ru/library/system.data.sqlclient.sqldataadapter.insertcommand(v=vs.90).aspx

но у меня вкоде выходит ошибка что command не определяется как SqlCommand а определяется как String

 If fBuild.WorkerState = "Add" Then

            Command = New SqlCommand("INSERT INTO TWorker (id_Obj, id_WorkerfromDic) Values (@ID_Obj, @IdWorkerfSelect)", fLogin.connection)
''на этой строке происходит ругательство по поводу типа

            'fBuild.cmd =("INSERT INTO TWorker (id_Obj, id_WorkerfromDic) VALUES (@ ID_Obj  ,@ IdWorkerfromSelect  )",flogin.connectionString)
            ''cmd.Parameters.Add(ID_Obj, Int())

            Command.Parameters.Add("@ID_Obj", SqlDbType.NChar, 5, "ID_Obj")
            Command.Parameters.Add("@IdWorkerfSelect", SqlDbType.NVarChar, 40, "IdWorkerfSelect")

            fBuild.adapter.InsertCommand = Command()
            fBuild.adapter.Fill(fBuild.ds, fLogin.connectionString)
        End If
fortibransa
Дата: 24.06.2014 09:02:40
Представленный кусок кода ни очем, что это вообще.
В нем все неправильно и нихрена не понятно.
ЕвгенийВ
Дата: 24.06.2014 10:37:27
tasha klemer,
Command() - возвращает строку. Скобки убери.
Roman Mejtes
Дата: 24.06.2014 11:25:53
я не гуру программирования, но наверное это должно быть похоже на это:
    class Class1
    {
        public void SqlQueryExmaple(string connectionString, SqlCredential credential = null)
        {
            using (var connection = new SqlConnection(connectionString, credential))
            {
                try
                {
                    object paramValue = null;
                    var command = connection.CreateCommand();
                    command.CommandText = "Имя таблицы, запрос или процедура";
                    //command.CommandType = CommandType.Text; - для запроса
                    //command.CommandType = CommandType.TableDirect; - для таблицы
                    //command.CommandType = CommandType.StoredProcedure; - для процедуры
                    command.CommandType = CommandType.StoredProcedure;
                    //если используем параметризированный запрос или процедуру задаем параметры
                    //имя параметра указывается без @, тип, размер и прочее можно не передавать, если параметр обычного типа
                    command.Parameters.Add(new SqlParameter("paramName", paramValue));
                    var reader = command.ExecuteReader();
                    foreach (var i in reader)
                        Debug.Print(i.ToString());
                }
                catch (Exception ex)
                {
                    //Тут обрабатывается ошибка если подключение не удалось или провайдер сообщил об ошибке
                    Debug.Print(ex.Message);
                    throw;
                }
                finally
                {
                    connection.Close();
                }
            }
        }
    }
tasha klemer
Дата: 24.06.2014 12:27:25
Да. Спасибо большое за разьяснение.

Вот мой код на примере Insert

Private Property Command As SqlCommand


Private Sub DataGridView1_CellDoubleClick....
 Command = New SqlCommand("INSERT INTO TWorker (id_Obj, id_WorkerfromDic) Values (@pIdObj, @pIdWorkerfSelect)", fLogin.connection)
            Command.Parameters.Add("@pIdObj", SqlDbType.Int, 5, "pIdObj").Value = fBuildAll.ID_Obj
            Command.Parameters.Add("@pIdWorkerfSelect", SqlDbType.Int, 3, "pIdWorkerfSelect").Value = IdWorkerfromSelect
            fBuild.adapter.InsertCommand = Command
            fBuild.adapter.InsertCommand.ExecuteNonQuery()

          End Sub


теперь борюсь с проблемой, необходимо после удаления или добавления новой записи в базу, отобразить эти изменения в ListBox.
Нужно как то обновить DataBindings , но не могу найти нужнйо статьи...