Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с Insert 
:(
    Опции темы
Ronin08
Дата 12.6.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: нет
Всего: 1



Доброго времени суток!
Иммется web-сервис, который работает с БД!
Код

    
    [WebMethod (Description="Метод для заполнения данными объекта DataSet")]
    public DataSet ZapolnenieDannimi()
    {
       string source = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\My_first_DB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        string select = "SELECT id, mouse, keyboard FROM Activity";
        SqlConnection conn = new SqlConnection(source);
        SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(select, conn);
        DataSet ds = new DataSet();
        sqlDataAdapter1.Fill(ds, "Customers");
       return ds;
    }

    [WebMethod(Description = "Метод для втавки данных в БД")]
    public void InsertData(int m_count, int kb_count, byte[] sc_short)
    {
        string source = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\My_first_DB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        string insert = "INSERT INTO Activity ( mouse, keyboard, screenshort) VALUES (" + m_count + " ," + kb_count+ " , " + sc_short + ")";
        SqlConnection conn = new SqlConnection(source);
        SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(insert, conn);
    }


и клиентское приложение:
Код

private void button1_Click(object sender, EventArgs e)
        {
            byte[] by = new byte[100];
            int mouse = Convert.ToInt32(textBox1.Text);
            int key = Convert.ToInt32(textBox2.Text);
            myservice.InsertData(mouse, key, by);
            DataSet ds = myservice.ZapolnenieDannimi();
            dataGridView1.DataSource = ds.Tables[0].DefaultView;
        }

код грязноватый, тестовый
select работает insert нет!!!

Это сообщение отредактировал(а) Ronin08 - 12.6.2008, 14:25
--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
jonie
Дата 12.6.2008, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



а где ты собственно insert выполняешь?
Код

        SqlConnection conn = new SqlConnection(source);
        SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(insert, conn);
это неправильно
тебе надо создать SqlCommand и сделать ей ExecuteNonQuery()
примерно так :
Код

SqlConnection conn = new SqlConnection(source);
SqlCommand cmd = new SqlCommand(queryString, conn);
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();

не забудь про try-finally блоки и т.п. обработку ошибок кароче


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Ronin08
Дата 13.6.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: нет
Всего: 1



jonie, спасибо, но все равно вылетает Exeption
Цитата

System.Web.Services.Protocols.SoapException: Серверу не удалось обработать запрос. ---> System.Data.SqlClient.SqlException: An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Add a name or single space as the alias name. 
The name "System.Byte" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
   в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   в System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   в System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
   в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   в System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   в Service.InsertData(Int32 m_count, Int32 kb_count, Byte[] sc_short) в c:\inetpub\wwwroot\Myservice\App_Code\Service.cs:строка 46
   --- Конец трассировки внутреннего стека исключений ---

Web-Service:
Код

[WebMethod(Description = "Метод для втавки данных в БД")]
    public void InsertData(int m_count, int kb_count, byte[] sc_short)
    {
        string source = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\My_DB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        string insert = "INSERT INTO Activity ( mouse, keyboard, screenshort) VALUES (" + m_count + " ," + kb_count+ " , " + sc_short + ")";
        SqlConnection conn = new SqlConnection(source);
        SqlCommand cmd = new SqlCommand(insert, conn);
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }

Клиент:
 
Код

Service myservice = new Service();
        private void button1_Click(object sender, EventArgs e)
        {
            byte[] photo = GetPhoto("C:\\Dock.jpg");
            int mouse = Convert.ToInt32(textBox1.Text);
            int key = Convert.ToInt32(textBox2.Text);
            myservice.InsertData(mouse, key, photo);
          }

        public static byte[] GetPhoto(string filePath)
        {
            FileStream stream = new FileStream(
                filePath, FileMode.Open, FileAccess.Read);
            BinaryReader reader = new BinaryReader(stream);
            byte[] photo = reader.ReadBytes((int)stream.Length);
            reader.Close();
            stream.Close();
            return photo;
        }


Добавлено через 8 минут и 58 секунд
Понял,  проблема в 
Код

public void InsertData(int m_count, int kb_count, byte[] sc_short)

а точнее нельзе передавать аргумент в виде byte[]
--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
mihryak
Дата 15.6.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: нет
Всего: 36



всё прогрессивное человечество давно уже текст команды пишет с использованием параметров ;)
Код

            SqlCommand insertCommand = new SqlCommand("INSERT INTO Activity (mouse, keyboard, screenshort) VALUES (@m_count, @kb_count, @sc_short);");
            insertCommand.Parameters.Add(new SqlParameter("@m_count", m_count));
            insertCommand.Parameters.Add(new SqlParameter("@kb_count", kb_count));
            insertCommand.Parameters.Add(new SqlParameter("@sc_short", sc_short));

и далее по тексту

если всё равно будет ругаться на byte[], задай явно третьему параметру тип SqlDbType.Image

Это сообщение отредактировал(а) mihryak - 15.6.2008, 15:54
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.