Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Canrer
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 1
1

Вставка записи с изображением в таблицу: "Не удается вставить повторяющийся ключ"

20.12.2012, 19:13. Просмотров 1030. Ответов 0
Метки нет (Все метки)

Срочно! горит!
Помогите оптимизировать код...
Вставка записи с изображением в таблицу БД хромает. пишет ошибку в этой строке: daT.Update(ds.Tables["Tovar"]); -

"Нарушено "PK_Tovar_1" ограничения PRIMARY KEY. Не удается вставить повторяющийся ключ в объект "dbo.Tovar". Повторяющееся значение ключа: (0).
Выполнение данной инструкции было прервано."


Я конечно понимаю что он не может вставить такое же значение.. но я отличное от имеющихся вставляю.
Вот код:

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace WindowsFormsApplication3
{
    public partial class Form6 : Form
    {
        public Form6()
        {
            InitializeComponent();
        }
        SqlConnection cnn = new SqlConnection(@"Data Source=ACER-ПК\SQLEXPRESS;Initial Catalog=kursovik;Integrated Security=True");
        DataSet ds = new DataSet();
        SqlDataAdapter daT = new SqlDataAdapter();
        //SqlDataAdapter daF = new SqlDataAdapter();
        BindingSource bdFac = new BindingSource();
 
        private void Form6_Load(object sender, EventArgs e)
        {
            daT.SelectCommand = new SqlCommand("select * from Tovar", cnn);
            daT.Fill(ds, "T");
            comboBox1.Enabled = false;
            comboBox1.DataSource = ds.Tables["T"];
            comboBox1.DisplayMember = "Description";
            comboBox1.ValueMember = "Kod_Tovar";
 
            //daF.SelectCommand = new SqlCommand("select * from Factura", cnn);
 
            daT.Fill(ds, "Tovar");
            bdFac.DataSource = ds.Tables["Tovar"];
            comboBox1.DataBindings.Add("SelectedValue", bdFac, "Kod_Tovar");
            textBox2.DataBindings.Add("Text", bdFac, "Kod_Tovar");
            textBox3.DataBindings.Add("Text", bdFac, "Name");
            textBox1.DataBindings.Add("Text", bdFac, "foto_tov");
 
 
            pictureBox1.Image = Image.FromFile(@"C:\Users\Acer\Desktop\ww.jpeg");
            
 
            daT.InsertCommand = new SqlCommand();
            daT.InsertCommand.CommandText = "insert into Tovar values (@Kod_Tovar,  @Name, @foto_tov)";
            daT.InsertCommand.Parameters.Add("@Kod_Tovar", SqlDbType.Int, 4, "Kod_Tovar");
            //daF.InsertCommand.Parameters.Add("@N_sklad", SqlDbType.Int, 4, "N_sklad");
            daT.InsertCommand.Parameters.Add("@Name", SqlDbType.VarChar, 50, "Name");
            daT.InsertCommand.Parameters.Add("@foto_tov", SqlDbType.VarChar, 250, "foto_tov");
            daT.InsertCommand.Connection = cnn;
 
            daT.UpdateCommand = new SqlCommand();
            daT.UpdateCommand.CommandText = "update Factura set Name=@Name, foto_tov=@foto_tov,  where Kod_Tov=@Kod_Tov";
            daT.UpdateCommand.Parameters.Add("@Kod_Tovar", SqlDbType.Int, 4, "Kod_Tovar");
            //daF.UpdateCommand.Parameters.Add("@N_sklad", SqlDbType.Int, 4, "N_sklad");
            daT.UpdateCommand.Parameters.Add("@Name", SqlDbType.VarChar, 50, "Name");
            daT.UpdateCommand.Parameters.Add("@foto_tov", SqlDbType.VarChar, 200, "foto_tov");
            daT.UpdateCommand.Connection = cnn;
 
            daT.DeleteCommand = new SqlCommand();
            daT.DeleteCommand.CommandText = "delete from Factura where Kod_Tovar=@Kod_Tovar";
            daT.DeleteCommand.Parameters.Add("@Kod_Tovar", SqlDbType.Int, 4, "Kod_Tovar");
            daT.DeleteCommand.Connection = cnn;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            bdFac.Position -= 1;
            pictureBox1.Image = Image.FromFile(textBox1.Text);
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            bdFac.Position += 1;
            pictureBox1.Image = Image.FromFile(textBox1.Text);
 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            textBox2.Clear();
            textBox3.Clear();
            comboBox1.Enabled = true;
            if (openFileDialog1.ShowDialog() != DialogResult.Cancel)
            {
                textBox1.Text = openFileDialog1.FileName;
                pictureBox1.Image = Image.FromFile(textBox1.Text);
 
            }
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            DataRow dr = ds.Tables["Tovar"].NewRow();
            dr["Kod_Tovar"] = Convert.ToInt32(comboBox1.SelectedValue);
            //dr["N_sklad"] = Convert.ToInt32();
            dr["Name"] = textBox3.Text;
            dr["foto_tov"] = textBox1.Text;
            ds.Tables["Tovar"].Rows.Add(dr);
            if (ds.Tables["Tovar"].GetChanges(DataRowState.Added) != null)
            {
                daT.Update(ds.Tables["Tovar"]);
                ds.Tables["Tovar"].AcceptChanges();
                daT.Fill(ds, "Tovar");
            }
 
 
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
            bdFac.RemoveCurrent();
            daT.Update(ds.Tables["Tovar"]);
 
        }
    }
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 19:13
Ответы с готовыми решениями:

Ошибка "Ключ поиска не найден ни в одной записи"
Добрый день. Столкнулся с такой проблемой. При удалении записи или попытки ее обновления выдает...

Не получается вставить данные в поле "дата" в таблицу MS Access
БД: Microsoft Access В таблице есть поле типа "Дата/время" (приложил в скрине) Не получается...

Ошибка "concurrency violation" при записи в таблицу
Уважаемые Гуру! Для чтения и проверки обновления использую следующий отладочный код: ...

Ошибка при записи слеша "/" в таблицу
Странные вещи творятся вокруг нас =) В C# уже отлаженная и вполне работающая программа выдаёт...

Элемент диаграммы с именем "Series1" не удается найти в "SeriesCollection"
Почему у меня пишет исключение: Элемент диаграммы с именем "Series1" не удается найти в...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 19:13

Ввод данных в пустую таблицу выбранной записи и ошибка "входная строка имеет неверный формат"
ввожу данные в пустую таблицу выбранной записи таким образом if...

Не удается преобразовать из типа "char" в тип "string"
Возникла необходимость отправить нескольким адресатам Email сообщение. Для этого я базу данных с...

Не удается найти точку входа "WMS_Open" в DLL "Pc.Shared.Barcode.dll"
Добрый день. У меня проблема с распознаванием штрих-кода (библиотеками Barcode.dll и coredll.dll),...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru