Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, Entity Framework
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/32: Рейтинг темы: голосов - 32, средняя оценка - 4.84
1 / 1 / 0
Регистрация: 05.03.2012
Сообщений: 15

Ошибка сохранения данных "Ошибка преобразования значения varchar "id" в тип данных int"

18.03.2012, 23:53. Показов 6045. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
private void btnSaveSettings_Click(object sender, EventArgs e)
        {
            string connStr = @"Data Source=(local)\SQLEXPRESS;
                            Initial Catalog=UkiCreditSystem;
                            Integrated Security=True";
 
            SqlConnection conn = new SqlConnection(connStr);
            try
            {
                //пробуем подключится
                conn.Open();
            }
            catch (SqlException se)
            {
                MessageBox.Show("error {0}",se.ToString());
                return;
            }
 
            SqlCommand cmd = new SqlCommand("Update SettingsBank" +
                " Set bik = @BIK where 'id' = 1", conn);
            /*Работаем с параметрами(SqlParameter), эта техника позволяет уменьшить
            кол-во ошибок и достичь большего быстродействия
            но требует и больших усилий в написании кода*/
            //объявляем объект класса SqlParameter
            SqlParameter param = new SqlParameter();
            //задаем имя параметра
            param.ParameterName = "@BIK";
            //задаем значение параметра
            param.Value = textBoxBIK.Text;
            //задаем тип параметра
            param.SqlDbType = SqlDbType.NChar;
            //передаем параметр объекту класса SqlCommand
            cmd.Parameters.Add(param);
           
            //try
            //{
                cmd.ExecuteNonQuery();
            //}
 
        }
Есть текстбокс. TextBoxBIK. Загружает из бд нормально. Меняю значение, нажимаю кнопку, код к которой приведен выше. получаю ошибку

Ошибка преобразования значения varchar "id" в тип данных int.
Очень долго пытался понять в чем она.
В бд id первичный ключ, int. Подскажите плз

Добавлено через 1 час 16 минут
Отлично, банально вызываем

xxxTableAdapter.Update(xxxDataSet);

проблема теперь в том, что в gridview данные обновляется только после клика по ней. Иначе там остаются старые. Как это исправить?

Добавлено через 39 минут
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                //this.settingsBankTableAdapter.Fill(this.ukiCreditSystemDataSet.SettingsBank);  - вызывает изменение значения в textbox
                //settingsBankBindingSource.ResetBindings();  - вызывает изменение значения в textbox
                //settingsBankBindingSource.ResetItem(0);  - вызывает изменение значения в textbox
 
                //dataGridView1.Focus(); - работает если до энтера по textbox'y был выбран необходимый нам столбик))
            }
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2012, 23:53
Ответы с готовыми решениями:

Ошибка преобразования значения varchar в тип данных int"
Нужно цифру из выбранного ряда в dataGridView1 разделить на 3 и вывести результат в текстбокс sumprtxt выдает ошибку Ошибка...

"Ошибка преобразования значения varchar "Modified" в тип данных int."
private void Update() { dataBase.openConnection(); for(int index = 0; index <...

Ошибка преобразования значения varchar в тип данных int
Можете помочь починить или переделать запросы чтобы все работало. Долго парился и вроде настроил а оно все равно не работает Есть...

10
124 / 106 / 7
Регистрация: 14.02.2010
Сообщений: 263
19.03.2012, 12:17
Цитата Сообщение от yoyki Посмотреть сообщение
проблема теперь в том, что в gridview данные обновляется только после клика по ней. Иначе там остаются старые. Как это исправить?
Выкладывайте код - какой источник данных Вы подключаете и как.
0
1 / 1 / 0
Регистрация: 05.03.2012
Сообщений: 15
19.03.2012, 13:28  [ТС]
вот проект. Решил скинуть его, так как адо.нет для меня полный ад, поэтому все данные я подключал через конструктор
База данных весьма проста - 1 таблица с 3 параметрами и 1 строчкой данных

В итоге получаем GridView и 2 textbox'a. Если выбрать ячейку в таблице, текстбоксы заполняются. Изменяя текст в текстбоксе, поидее, должно меняться значение в ячейке. Но это происходит только если ее выбрать, причем именно мышкой, причем именно второй столбик.

PS: проблема с правым текстбоксом, левый еще даже не менялся

WindowsFormsApplication2.7z

script.txt
0
1 / 1 / 0
Регистрация: 05.03.2012
Сообщений: 15
19.03.2012, 13:40  [ТС]
если можно, скиньте какой либо проект, работающий с базой данных через TableAdapter'ы и BindingSouce'ы
0
124 / 106 / 7
Регистрация: 14.02.2010
Сообщений: 263
19.03.2012, 15:12
хм... У dataGridView1 источник данных settingsBankBindingSource, у settingsBankBindingSource - bindingSource1, у bindingSource1 - UkiCreditSystemDataSet. Игла в яйце, яйцо в курице, курица в утке...

Возможно при такой вложенности события нормально не обрабатываются. Попробуйте для начала задать dataGridView1 DataSource - bindingSource1.


Цитата Сообщение от yoyki Посмотреть сообщение
если можно, скиньте какой либо проект, работающий с базой данных через TableAdapter'ы и BindingSouce'ы
Я с TableAdapter-ами зарекся работать. Делаешь их за пять минут, а косяки ищешь неделями.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
19.03.2012, 15:27
Цитата Сообщение от yoyki Посмотреть сообщение
param.SqlDbType = SqlDbType.NChar;
Здесь необходимо указать SqlDbType.Int , насколько я понял

Добавлено через 42 секунды
Цитата Сообщение от yoyki Посмотреть сообщение
where 'id'
или здесь убрать кавычки для id
0
1 / 1 / 0
Регистрация: 05.03.2012
Сообщений: 15
19.03.2012, 16:21  [ТС]
Цитата Сообщение от serg42 Посмотреть сообщение
хм... У dataGridView1 источник данных settingsBankBindingSource, у settingsBankBindingSource - bindingSource1, у bindingSource1 - UkiCreditSystemDataSet. Игла в яйце, яйцо в курице, курица в утке...

Возможно при такой вложенности события нормально не обрабатываются. Попробуйте для начала задать dataGridView1 DataSource - bindingSource1.



Я с TableAdapter-ами зарекся работать. Делаешь их за пять минут, а косяки ищешь неделями.
А с чем лучше? ODBC?

Добавлено через 21 минуту
Цитата Сообщение от Learx Посмотреть сообщение
Здесь необходимо указать SqlDbType.Int , насколько я понял

Добавлено через 42 секунды

или здесь убрать кавычки для id
кавычки убирал, та же ошибка была.
А int не подходит, так как нужна строка, число может начинаться и с 0.

Добавлено через 15 минут
собственно, если кому поможет - задача в следующем. Надо редактировать настройки из текстбоксов после нажатия ентера. у меня пока только такое решение собралось. Может быть кто либо что либо посоветует по решению этой задачи
0
124 / 106 / 7
Регистрация: 14.02.2010
Сообщений: 263
19.03.2012, 17:19
Цитата Сообщение от yoyki Посмотреть сообщение
А с чем лучше? ODBC?
Это кому как удобнее. Но ODBC тут не причём, я имел ввиду, что не использую генерацию кода для работы с БД.

Цитата Сообщение от yoyki Посмотреть сообщение
кавычки убирал, та же ошибка была.
А int не подходит, так как нужна строка, число может начинаться и с 0.
Кавычки там не играют никакой роли. Попробуйте задавать id через параметр.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
19.03.2012, 17:41
adapter проходит по строчкам DataTable и в зависимости от RowStatus использует или Update или Insert.
UpdateCommand и InsertCommand криво генерятся автоматически.
выхода тут два:
1.ручками писать UpdateCommand и InsertCommand указывая SourceColemn в параметрах
2. самому проходить по строчками и выполнять необходимые команды - более гибкий способ так как в зависимости от данных можно выполнять сколько угодно и какие угодно команды.
0
1 / 1 / 0
Регистрация: 05.03.2012
Сообщений: 15
19.03.2012, 20:12  [ТС]
Цитата Сообщение от Learx Посмотреть сообщение
1.ручками писать UpdateCommand и InsertCommand указывая SourceColemn в параметрах
2. самому проходить по строчками и выполнять необходимые команды - более гибкий способ так как в зависимости от данных можно выполнять сколько угодно и какие угодно команды.
знать бы как...

Добавлено через 32 минуты
Слава будде.
https://www.cyberforum.ru/ado-... 09337.html
>.<
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
19.03.2012, 20:19
UpdateCommand и InsertCommand для адаптера:
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlDataAdapter ada = new SqlDataAdapter();
ada.UpdateCommand = new Sql Command(@"Update MyTable Set Field1=@F1 where Id=@Id", conn);
ada.UpdateCommand.Parameters.Add("@F1", SqlDbType.NVarChar).SourceColumn = "Field1";
ada.UpdateCommand.Parameters.Add("@Id", SqlDbType.Int).SourceColumn = "Id";
ada.InsertCommand= new Sql Command(@"Insert Into MyTable Vulues (@F1)", conn);
ada.InsertCommand.Parameters.Add("@F1", SqlDbType.NVarChar).SourceColumn = "Field1";
ada.InsertCommand.Parameters.Add("@Id", SqlDbType.Int).SourceColumn = "Id";
ada.Update(MyDataSet, "MyTable");
}
работаем со строками:
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using (SqlConnection conn = new SqlConnection(connectionString))
{
string qiury1= "...";
string qiury2= "...";
string qiury3= "...";
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
foreach(DataRow row in MyDataSet.Tables["MyTable"].Rows)
{
if(...) 
{
comm.CommandText = query1;
comm.Parameters["ParName"].Value = row["Field1"];
comm.ExecuteNonQuery();
continue;
}
if(...) 
{
comm.CommandText = query2;
comm.Parameters["ParName"].Value = row["Field1"];
comm.ExecuteNonQuery();
continue;
}
if(...) 
{
comm.CommandText = query3;
comm.Parameters["ParName"].Value = row["Field1"];
comm.ExecuteNonQuery();
}
}
}
P.S. При работе со строками лучше все завернуть в транзакцию.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2012, 20:19
Помогаю со студенческими работами здесь

Ошибка преобразования значения varchar в тип данных int
Доброго времени суток! Есть три простые таблицы в базе Shop: первая - All_buy с данными о товарах: ( tovar_id integer ...

Ошибка преобразования значения varchar "МР-12" в тип данных int
не могу понять почему выдает ошибку (Ошибка преобразования значения varchar &quot;МР-12&quot; в тип данных int.) почему группу преобразует в...

Ошибка преобразования значения varchar "<NULL>" в тип данных int
use master GO CREATE DATABASE Библиотека GO USE Библиотека GO CREATE TABLE Абонент (Читбилет char(20) PRIMARY KEY, ...

Как исправить ошибку преобразования значения varchar в тип данных int?
Здравствуйте, подскажите пожалуйста, как исправить ошибку преобразования значения varchar в тип данных int? Вот я создал хранимую...

Ошибка преобразования значения nvarchar "email_11@gmail.com" в тип данных int
--3. Отобразить ФИО, и контактные данные (телефоны и емейлы студентов) студентов группы Group_4. // НЕ РАБОТАЕТ SELECT Student.Name,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели. Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер