Adapter fill table ошибка

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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
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 AdvancedWizardControl.Wizard;
using AdvancedWizardControl.WizardPages;
using AdvancedWizardControl.Enums;
using AdvancedWizardControl.EventArguments;
using AdvancedWizardControl;
using Dapper;
using MySql.Data.MySqlClient;
using System.Diagnostics;
using System.IO;
 
namespace IT_A_stroy
{
    public partial class WizardPageEventArgs : Form
    {
        public int PreviousPage { get; set; }
        //DataSet ds;
        MySqlDataAdapter adapter;
        readonly string connectionString = "server=localhost;user=root;database=a_stroy;password=q1w2e3r4t5y6u7i8o9p0;";
        //string sql_1 = "select Progess, Progress_info from a_stroy.step3 where 1=2";
        public DataTable Execute(string script)
        {
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                DataTable table = new DataTable();
                connection.Open();
                //ds = new DataSet();
                adapter = new MySqlDataAdapter(script, connection);
                adapter.Fill(table);
                return table;
            }
        }
 
        private void СomboBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            if (comboBox1.SelectedValue != null)
            {
                column1.DataSource = Execute($"SELECT id_Object, id_customer, Name_object FROM a_stroy.object where id_customer = {comboBox1.SelectedValue};");
                column1.DisplayMember = "Name_object";
                column1.ValueMember = "id_Object";
                //int countRow = dataGridView1.RowCount == 1 ? 1 : dataGridView1.RowCount - 1;
                //int DGV1 = comboBox1.SelectedIndex;
                //ds.Tables["step3"].Rows.Add(countRow);
            }
        }
 
        private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            ComboBox cbDgv = e.Control as ComboBox;
            cbDgv.SelectedValueChanged -= CbDgv_SelectedValueChanged;
            cbDgv.SelectedValueChanged += CbDgv_SelectedValueChanged;
        }
 
        private void CbDgv_SelectedValueChanged(object sender, EventArgs e)
        {
            ComboBox box = sender as ComboBox;
            Debug.WriteLine(box.SelectedValue);
            var query = $"SELECT id_Object, Name_works FROM a_stroy.words_object where id_Object = {box.SelectedValue}";
            column2.DataSource = Execute(query);
            column2.DisplayMember = "Name_works";
            column2.ValueMember = "id_Object";
        }
 
        private void DataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           //
        }
 
        public WizardPageEventArgs()
        {
            InitializeComponent();
            //using (MySqlConnection connection = new MySqlConnection(connectionString))
            //{
            //    connection.Open();
            //    ds = new DataSet();
            //    adapter = new MySqlDataAdapter(sql_1, connection);
            //    adapter.Fill(ds);
            //    dataGridView3.DataSource = ds.Tables["step1_1"];
            //}
 
            comboBox1.DataSource = Execute("SELECT id_customer, Name_customer FROM a_stroy.customer;");
            comboBox1.DisplayMember = "Name_customer";
            comboBox1.ValueMember = "id_customer";
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox1.SelectedValueChanged += new System.EventHandler(СomboBox1_SelectedValueChanged);
 
            comboBox2.DataSource = Execute("SELECT id_organization, Name_organization FROM a_stroy.organization;");
            comboBox2.DisplayMember = "Name_organization";
            comboBox2.ValueMember = "id_organization";
            comboBox2.DropDownStyle = ComboBoxStyle.DropDownList;
 
            // DataGridView1
            column1 = new DataGridViewComboBoxColumn();
            column1.HeaderText = "Выберите объект(ы)";
            column1.Name = "Column1";
            dataGridView1.Columns.AddRange(new DataGridViewColumn[] { column1 });
            dataGridView1.Columns["Column1"].Width = 332;
 
            Debug.WriteLine(comboBox1.SelectedIndex);
 
            // DataGridView2
            column2 = new DataGridViewComboBoxColumn();
            column3 = new DataGridViewTextBoxColumn();
            column4 = new DataGridViewTextBoxColumn();
            column5 = new DataGridViewButtonColumn();
            column2.HeaderText = "Наименование работы";
            column3.HeaderText = "Выполненный объем";
            column4.HeaderText = "Наименования выбранных файлов";
            column5.HeaderText = "Выберите файл";
            column2.Name = "Column2";
            column3.Name = "Column3";
            column4.Name = "Column4";
            column5.Name = "Column5";
            dataGridView2.Columns.AddRange(new DataGridViewColumn[] { column2, column3, column4, column5 });
            dataGridView2.Columns["Column2"].Width = 200;
            dataGridView2.Columns["Column3"].Width = 141;
            dataGridView2.Columns["Column4"].Width = 240;
            dataGridView2.Columns["Column5"].Width = 100;
            dataGridView2.Columns[2].ReadOnly = true;
            Debug.WriteLine(comboBox2.SelectedIndex);
 
            // DataGridView3
            column6 = new DataGridViewTextBoxColumn();
            column7 = new DataGridViewTextBoxColumn();
            column8 = new DataGridViewTextBoxColumn();
            column6.HeaderText = "Наименование объекта";
            column7.HeaderText = "Наименование достижения";
            column8.HeaderText = "Описание достижения";
            column6.Name = "Column6";
            column7.Name = "Column7";
            column8.Name = "Column8";
            dataGridView3.Columns.AddRange(new DataGridViewColumn[] { column6, column7, column8 });
            dataGridView3.Columns["Column6"].Width = 200;
            dataGridView3.Columns["Column7"].Width = 181;
            dataGridView3.Columns["Column8"].Width = 300;
            dataGridView3.AllowUserToAddRows = false;
            
            // DataGridView4
            column9 = new DataGridViewTextBoxColumn();
            column10 = new DataGridViewTextBoxColumn();
            column11 = new DataGridViewTextBoxColumn();
            column9.HeaderText = "Наименование объекта";
            column10.HeaderText = "Трудности";
            column11.HeaderText = "Комментарий";
            column9.Name = "Column9";
            column10.Name = "Column10";
            column11.Name = "Column11";
            dataGridView4.Columns.AddRange(new DataGridViewColumn[] { column9, column10, column11 });
            dataGridView4.Columns["Column9"].Width = 200;
            dataGridView4.Columns["Column10"].Width = 181;
            dataGridView4.Columns["Column11"].Width = 300;
            dataGridView4.AllowUserToAddRows = false;
 
            // DataGridView5
            column12 = new DataGridViewTextBoxColumn();
            column13 = new DataGridViewTextBoxColumn();
            column14 = new DataGridViewButtonColumn();
            column15 = new DataGridViewTextBoxColumn();
            column12.HeaderText = "Наименование объекта";
            column13.HeaderText = "Выбранная диаграмма (график производства работ)";
            column14.HeaderText = "Выберите файл";
            column15.HeaderText = "Комментарий";
            column12.Name = "Column12";
            column13.Name = "Column13";
            column14.Name = "Column14";
            column15.Name = "Column15";
            dataGridView5.Columns.AddRange(new DataGridViewColumn[] { column12, column13, column14, column15 });
            dataGridView5.Columns["Column12"].Width = 150;
            dataGridView5.Columns["Column13"].Width = 181;
            dataGridView5.Columns["Column14"].Width = 150;
            dataGridView5.Columns["Column15"].Width = 200;
            dataGridView5.AllowUserToAddRows = false;
 
            // DataGridView6
            column16 = new DataGridViewTextBoxColumn();
            column17 = new DataGridViewComboBoxColumn();
            column18 = new DataGridViewTextBoxColumn();
            column19 = new DataGridViewTextBoxColumn();
            column20 = new DataGridViewTextBoxColumn();
            column21 = new DataGridViewComboBoxColumn();
            column22 = new DataGridViewComboBoxColumn();
            column16.HeaderText = "Задача/документ";
            column17.HeaderText = "Ответсвенная сторона";
            column18.HeaderText = "Дата подачи";
            column19.HeaderText = "Плановый срок";
            column20.HeaderText = "Задержка дней";
            column21.HeaderText = "Этап";
            column22.HeaderText = "Статус";
            column16.Name = "Column16";
            column17.Name = "Column17";
            column18.Name = "Column18";
            column19.Name = "Column19";
            column20.Name = "Column20";
            column21.Name = "Column21";
            column22.Name = "Column22";
            dataGridView6.Columns.AddRange(new DataGridViewColumn[] { column16, column17, column18, column19, column20, column21, column22 });
            dataGridView6.Columns["Column16"].Width = 141;
            dataGridView6.Columns["Column17"].Width = 130;
            dataGridView6.Columns["Column18"].Width = 80;
            dataGridView6.Columns["Column19"].Width = 80;
            dataGridView6.Columns["Column20"].Width = 70;
            dataGridView6.Columns["Column21"].Width = 90;
            dataGridView6.Columns["Column22"].Width = 90;
            //Debug.WriteLine(comboBox1.SelectedIndex);
 
            // DataGridView7
            column23 = new DataGridViewComboBoxColumn();
            column24 = new DataGridViewTextBoxColumn();
            column25 = new DataGridViewTextBoxColumn();
            column26 = new DataGridViewTextBoxColumn();
            column27 = new DataGridViewTextBoxColumn();
            column28 = new DataGridViewTextBoxColumn();
            column29 = new DataGridViewTextBoxColumn();
            column23.HeaderText = "Номер договора";
            column24.HeaderText = "Номер недели";
            column25.HeaderText = "Размер аванса";
            column26.HeaderText = "Дата авансового платежа";
            column27.HeaderText = "Оплата выполненных работ";
            column28.HeaderText = "Гарантийное удержание";
            column29.HeaderText = "Дата фактического платежа";
            column23.Name = "Column23";
            column24.Name = "Column24";
            column25.Name = "Column25";
            column26.Name = "Column26";
            column27.Name = "Column27";
            column28.Name = "Column28";
            column29.Name = "Column29";
            dataGridView7.Columns.AddRange(new DataGridViewColumn[] { column23, column24, column25, column26, column27, column28, column29 });
            dataGridView7.Columns["Column23"].Width = 90;
            dataGridView7.Columns["Column24"].Width = 60;
            dataGridView7.Columns["Column25"].Width = 60;
            dataGridView7.Columns["Column26"].Width = 120;
            dataGridView7.Columns["Column27"].Width = 131;
            dataGridView7.Columns["Column28"].Width = 90;
            dataGridView7.Columns["Column29"].Width = 130;
            dataGridView7.AllowUserToAddRows = false;
            //Debug.WriteLine(comboBox1.SelectedIndex);
 
            // DataGridView8
            column30 = new DataGridViewComboBoxColumn();
            column31 = new DataGridViewTextBoxColumn();
            column32 = new DataGridViewTextBoxColumn();
            column33 = new DataGridViewTextBoxColumn();
            column34 = new DataGridViewTextBoxColumn();
            column35 = new DataGridViewComboBoxColumn();
            column30.HeaderText = "Номер договора";
            column31.HeaderText = "Номер акта КС2/КС3";
            column32.HeaderText = "Период";
            column33.HeaderText = "Дата подачи";
            column34.HeaderText = "Дата подписания";
            column35.HeaderText = "Статус";
            column30.Name = "Column30";
            column31.Name = "Column31";
            column32.Name = "Column32";
            column33.Name = "Column33";
            column34.Name = "Column34";
            column35.Name = "Column35";
            dataGridView8.Columns.AddRange(new DataGridViewColumn[] { column30, column31, column32, column33, column34, column35 });
            dataGridView8.Columns["Column30"].Width = 116;
            dataGridView8.Columns["Column31"].Width = 140;
            dataGridView8.Columns["Column32"].Width = 100;
            dataGridView8.Columns["Column33"].Width = 100;
            dataGridView8.Columns["Column34"].Width = 125;
            dataGridView8.Columns["Column35"].Width = 100;
            //Debug.WriteLine(comboBox1.SelectedIndex);
 
            // DataGridView12
            column36 = new DataGridViewTextBoxColumn();
            column37 = new DataGridViewTextBoxColumn();
            column38 = new DataGridViewTextBoxColumn();
            column39 = new DataGridViewTextBoxColumn();
            column40 = new DataGridViewTextBoxColumn();
            column41 = new DataGridViewTextBoxColumn();
            column42 = new DataGridViewTextBoxColumn();
            column36.HeaderText = "Номер договора";
            column37.HeaderText = "Общий журнал";
            column38.HeaderText = "Замечаний всего";
            column39.HeaderText = "Не снятых замечаний";
            column40.HeaderText = "Журналы по ТБ";
            column41.HeaderText = "Журналы выдачи СИЗ";
            column42.HeaderText = "АОСР";
            column36.Name = "Column36";
            column37.Name = "Column37";
            column38.Name = "Column38";
            column39.Name = "Column39";
            column40.Name = "Column40";
            column41.Name = "Column41";
            column42.Name = "Column42";
            dataGridView12.Columns.AddRange(new DataGridViewColumn[] { column36, column37, column38, column39, column40, column41, column42 });
            dataGridView12.Columns["Column36"].Width = 120;
            dataGridView12.Columns["Column37"].Width = 111;
            dataGridView12.Columns["Column38"].Width = 100;
            dataGridView12.Columns["Column39"].Width = 100;
            dataGridView12.Columns["Column40"].Width = 100;
            dataGridView12.Columns["Column41"].Width = 100;
            dataGridView12.Columns["Column42"].Width = 50;
            dataGridView12.AllowUserToAddRows = false;
 
            // DataGridView13
            column43 = new DataGridViewTextBoxColumn();
            column44 = new DataGridViewTextBoxColumn();
            column45 = new DataGridViewTextBoxColumn();
            column46 = new DataGridViewTextBoxColumn();
            column47 = new DataGridViewTextBoxColumn();
            column48 = new DataGridViewComboBoxColumn();
            column49 = new DataGridViewComboBoxColumn();
            column43.HeaderText = "Учаток работ";
            column44.HeaderText = "Объем работ";
            column45.HeaderText = "Место работ";
            column46.HeaderText = "Дата подачи КП";
            column47.HeaderText = "Плановый срок решения";
            column48.HeaderText = "Статус работ";
            column49.HeaderText = "Статус документов";
            column43.Name = "Column43";
            column44.Name = "Column44";
            column45.Name = "Column45";
            column46.Name = "Column46";
            column47.Name = "Column47";
            column48.Name = "Column48";
            column49.Name = "Column49";
            dataGridView13.Columns.AddRange(new DataGridViewColumn[] { column43, column44, column45, column46, column47, column48, column49 });
            dataGridView13.Columns["Column43"].Width = 110;
            dataGridView13.Columns["Column44"].Width = 100;
            dataGridView13.Columns["Column45"].Width = 100;
            dataGridView13.Columns["Column46"].Width = 95;
            dataGridView13.Columns["Column47"].Width = 105;
            dataGridView13.Columns["Column48"].Width = 80;
            dataGridView13.Columns["Column49"].Width = 91;
            //Debug.WriteLine(comboBox1.SelectedIndex);
 
            // DataGridView14
            column50 = new DataGridViewTextBoxColumn();
            column51 = new DataGridViewComboBoxColumn();
            column52 = new DataGridViewTextBoxColumn();
            column53 = new DataGridViewCheckBoxColumn();
            column50.HeaderText = "Обусждаемые вопросы";
            column51.HeaderText = "Ответственный";
            column52.HeaderText = "Результат";
            column53.HeaderText = "Актуальность";
            column50.Name = "Column50";
            column51.Name = "Column51";
            column52.Name = "Column52";
            column53.Name = "Column53";
            dataGridView14.Columns.AddRange(new DataGridViewColumn[] { column50, column51, column52, column53 });
            dataGridView14.Columns["Column50"].Width = 300;
            dataGridView14.Columns["Column51"].Width = 131;
            dataGridView14.Columns["Column52"].Width = 150;
            dataGridView14.Columns["Column53"].Width = 100;
            //Debug.WriteLine(comboBox1.SelectedIndex);
        }
        DataGridViewComboBoxColumn column1;
        DataGridViewComboBoxColumn column2;
        DataGridViewTextBoxColumn column3;
        DataGridViewTextBoxColumn column4;
        DataGridViewButtonColumn column5;
        DataGridViewTextBoxColumn column6;
        DataGridViewTextBoxColumn column7;
        DataGridViewTextBoxColumn column8;
        DataGridViewTextBoxColumn column9;
        DataGridViewTextBoxColumn column10;
        DataGridViewTextBoxColumn column11;
        DataGridViewTextBoxColumn column12;
        DataGridViewTextBoxColumn column13;
        DataGridViewButtonColumn column14;
        DataGridViewTextBoxColumn column15;
        DataGridViewTextBoxColumn column16;
        DataGridViewComboBoxColumn column17;
        DataGridViewTextBoxColumn column18;
        DataGridViewTextBoxColumn column19;
        DataGridViewTextBoxColumn column20;
        DataGridViewComboBoxColumn column21;
        DataGridViewComboBoxColumn column22;
        DataGridViewComboBoxColumn column23;
        DataGridViewTextBoxColumn column24;
        DataGridViewTextBoxColumn column25;
        DataGridViewTextBoxColumn column26;
        DataGridViewTextBoxColumn column27;
        DataGridViewTextBoxColumn column28;
        DataGridViewTextBoxColumn column29;
        DataGridViewComboBoxColumn column30;
        DataGridViewTextBoxColumn column31;
        DataGridViewTextBoxColumn column32;
        DataGridViewTextBoxColumn column33;
        DataGridViewTextBoxColumn column34;
        DataGridViewComboBoxColumn column35;
        DataGridViewTextBoxColumn column36;
        DataGridViewTextBoxColumn column37;
        DataGridViewTextBoxColumn column38;
        DataGridViewTextBoxColumn column39;
        DataGridViewTextBoxColumn column40;
        DataGridViewTextBoxColumn column41;
        DataGridViewTextBoxColumn column42;
        DataGridViewTextBoxColumn column43;
        DataGridViewTextBoxColumn column44;
        DataGridViewTextBoxColumn column45;
        DataGridViewTextBoxColumn column46;
        DataGridViewTextBoxColumn column47;
        DataGridViewComboBoxColumn column48;
        DataGridViewComboBoxColumn column49;
        DataGridViewTextBoxColumn column50;
        DataGridViewComboBoxColumn column51;
        DataGridViewTextBoxColumn column52;
        DataGridViewCheckBoxColumn column53;
 
        private void ДобавитьОрганизациюToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form a = new Form1();
            a.Show();
        }
 
        private void ДобавитьЗаказчикаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form b = new Form2();
            b.Show();
        }
 
        private void ДобавитьОбъектToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form c = new Form3();
            c.Show();
        }
 
        private void ПротоколСобранияToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form d = new Form4();
            d.Show();
        }
 
        private void DataGridView5_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //dataGridView5.Rows[e.RowIndex].Cells[2].Value = "Выберите файл";
        }
 
        private void Form0_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "a_stroyDataSet.customer". При необходимости она может быть перемещена или удалена.
            this.customerTableAdapter.Fill(this.a_stroyDataSet.customer);
            // TODO: данная строка кода позволяет загрузить данные в таблицу "a_stroyDataSet5._object". При необходимости она может быть перемещена или удалена.
            this.objectTableAdapter.Fill(this.a_stroyDataSet5._object);
            advancedWizard1.FinishButton = false;
        }
 
        private void AdvancedWizard1_CancelClick(object sender, EventArgs e)
        {
            Close();
        }
 
        private void AdvancedWizard1_Finish(object sender, EventArgs e)
        {
            MessageBox.Show("Введенные данные успешно сохранены!", "Successful");
        }
 
        public WizardPageEventArgs(int Lastpage)
        {
            int a = PreviousPage;
            //int b = LastPage;
            if (a + 1 == Lastpage)
            {
                advancedWizard1.FinishButton = true;
                advancedWizard1.FinishButtonEnabled = true;
                advancedWizard1.NextButtonEnabled = false;
            }
            else
            {
                advancedWizard1.FinishButton = false;
                advancedWizard1.FinishButtonEnabled = false;
                advancedWizard1.NextButtonEnabled = true;
            }
        }
    }
}

Правильно ли я подключаюсь к БД?

При подключение выходит ошибка на adapter.Fill(table);

using MySql.Data.MySqlClient;
...
    private void buttonOk_Click(object sender, EventArgs e)
    {
        timer2.Start();
    }

    public static string Datasource = "localhost";
    public static string Port = "3306";
    public static string InitialCatalog = "user";
    public static string Username = "user";
    public static string Password = "pass";

    //MySql
    MySqlConnection connection = new MySqlConnection("datasource=" + Datasource + ";port=" + Port + ";Initial Catalog='" + InitialCatalog + "';username=" + Username + ";password=" + Password);
    MySqlDataAdapter adapter;
    DataTable table = new DataTable();

    public void MySqlConnect()
    {
        adapter = new MySqlDataAdapter("SELECT `username`, `password` FROM `users` WHERE `username` = '" + textBoxUsername.Text + "' AND `password` = '" + textBoxPassword.Text + "'", connection);
        adapter.Fill(table); //PROBLEM

        if (table.Rows.Count <= 0)
        {
            panel1.Height = 0;
            labelMessage.ForeColor = Color.Red;
            labelMessage.Text = "Username Or Password Are Invalid";
            timer1.Start();
        }
        else
        {
            panel1.Height = 0;
            labelMessage.ForeColor = Color.Green;
            labelMessage.Text = "Login Successfully";
            timer1.Start();
        }

        table.Clear();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (panel1.Height != 100)
        {
            panel1.Height = panel1.Height + 5;
            if (panel1.Height == 100)
            {
                timer1.Stop();
            }
        }
    }

    private void timer2_Tick(object sender, EventArgs e)
    {
        if (panel1.Height != 0)
        {
            panel1.Height = panel1.Height - 5;
            if (panel1.Height == 0)
            {
                timer2.Stop();
            }
        }
    }

    private void checkBoxShowPass_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBoxShowPass.Checked)
        {
            textBoxPassword.UseSystemPasswordChar = true;
        }
        else
        {
            textBoxPassword.UseSystemPasswordChar = false;
        }
    }
...

Текст ошибки

MySql.Data.MySqlClient.MySqlException
  HResult=0x80004005
  Сообщение = Authentication to host 'localhost' for user 'user' using method 'mysql_native_password' failed with message: Access denied for user 'user'@'localhost' (using password: YES)
  Источник = MySql.Data
  Внутреннее исключение 1:
MySqlException: Access denied for user 'user'@'localhost' (using password: YES)

Hello,

I have a DbDataAdapter on which I call Fill() and it gives me an error that says:

«There is already an open DataReader associated with this command which must be closed first.»

Here is how I setup the command:

private int ExecuteQuery(string queryString,…)
{
                using (DbCommand command = GetCommand(_sourceConnection))
                {              

                    command.CommandText = queryString;

                    FillTable(command, table, true);
                }
}

public static DbCommand GetCommand(DbConnection connection, DbTransaction transaction = null)
        {
            DbCommand result;

            if (connection is OracleConnection)
            {
                result = new OracleCommand();
            }
            else
            {
                result = new SqlCommand();
            }

            result.Connection = connection;
            result.Transaction = transaction;

            return result;
        }

public static void FillTable(DbCommand command, DataTable table, bool clear = false)
        {
            DbDataAdapter adapter = null;

            // Clear table
            if (clear)
            {
                table.Rows.Clear();
            }

            // Populate table
            try
            {
                if (command is OracleCommand)
                {
                    adapter = new OracleDataAdapter();
                }
                else
                {
                    adapter = new SqlDataAdapter();
                }

                adapter.SelectCommand = command;
                adapter.SelectCommand.CommandTimeout = 600;

                adapter.Fill(table); // <— offending line
            }
            finally
            {
                if (adapter != null)
                {
                    adapter.Dispose();
                }
            }
        }

It’s when adaptor.Fill(table) is called that I get the error.

_sourceConnection is the DbConnection object that it works on, and it is open at all times.

Oddly enough, I can fix this problem by closing the connection before calling adaptor.Fill(table) and then open it again afterwards, like so:

                if (command.Connection.State == ConnectionState.Open)
                {
                    command.Connection.Close();
                }

                adapter.Fill(table);

                if (command.Connection.State == ConnectionState.Closed)
                {
                    command.Connection.Open();
                }

This makes absolutely no sense to me. How does the call to adapter.Fill(table) work is you CLOSE the connection but not if you open it.

The only thing I can think of is that there is another connection open (as the error message says), but 1) I have no idea how the adapter knows about it or uses it since I only give it _sourceconnection within the command object, and 2) the command object
is created from scratch every time, and as you can see above there is no point in the process where it is given another connection object.

One other thing I can think of is that maybe when you assign the connection object to the command object’s Connection property, it makes a COPY of the original (therefore creating TWO connection objects), but I’m still not sure how the adapter would know
about the original one.

Please help.

Привет!
вот пытаюсь подключиться к базе данных, но выдает такую ошибку —
60f4031fdaf9d159669943.png
и еще эту же ошибку выводит в такой строке
*****
adapter.Fill(table);
*****

private void connecting_Click(object sender, EventArgs e)
        {
            string userLogin = userName.Text;
            string pass= Pass.Text;
            int hash = Convert.ToInt32(Hash.Text);

            baseUsers db = new baseUsers();
            DataTable table = new DataTable();
            MySqlDataAdapter adapter = new MySqlDataAdapter();
            MySqlCommand command = new MySqlCommand("SELECT * FROM `users` WHERE 'name' = @uL AND 'pass' = @uK AND 'hash' = @uH", db.GetConnection());

            command.Parameters.Add("uL", MySqlDbType.VarChar).Value = userLogin;
            command.Parameters.Add("uK", MySqlDbType.VarChar).Value = pass;
            command.Parameters.Add("uH", MySqlDbType.Int32).Value = hash;

            adapter.SelectCommand = command;
            adapter.Fill(table);

            if (table.Rows.Count > 0)
            {
                MessageBox.Show("user [true]", "INFO");
            }
            else
            {
                MessageBox.Show("user [false]", "INFO");
            }

        }

прошу помощи , подключаюсь на удаленный сервер, вот данные (возможно указаны не правильно)

static string user = «server=77.222.40.101;port=5431;username=users;password=USER00;database=userBase»;

Привет!
вот пытаюсь подключиться к базе данных, но выдает такую ошибку —
60f4031fdaf9d159669943.png
и еще эту же ошибку выводит в такой строке
*****
adapter.Fill(table);
*****

private void connecting_Click(object sender, EventArgs e)
        {
            string userLogin = userName.Text;
            string pass= Pass.Text;
            int hash = Convert.ToInt32(Hash.Text);

            baseUsers db = new baseUsers();
            DataTable table = new DataTable();
            MySqlDataAdapter adapter = new MySqlDataAdapter();
            MySqlCommand command = new MySqlCommand("SELECT * FROM `users` WHERE 'name' = @uL AND 'pass' = @uK AND 'hash' = @uH", db.GetConnection());

            command.Parameters.Add("uL", MySqlDbType.VarChar).Value = userLogin;
            command.Parameters.Add("uK", MySqlDbType.VarChar).Value = pass;
            command.Parameters.Add("uH", MySqlDbType.Int32).Value = hash;

            adapter.SelectCommand = command;
            adapter.Fill(table);

            if (table.Rows.Count > 0)
            {
                MessageBox.Show("user [true]", "INFO");
            }
            else
            {
                MessageBox.Show("user [false]", "INFO");
            }

        }

прошу помощи , подключаюсь на удаленный сервер, вот данные (возможно указаны не правильно)

static string user = «server=77.222.40.101;port=5431;username=users;password=USER00;database=userBase»;

Im trying to connect to the database MySql but this error was appeared

FileNotFoundException was unhandled

in the line of adapter.Fill.

FileNotFoundException was unhandled Could not load file or assembly ‘Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106’ or one of its dependencies. The system cannot find the file specified

class CONNECT
{
    private MySqlConnection connection = new MySqlConnection("Datasource=localhost;Port=3306;Username=root;Password=;Database=Csharp_Hotel_DB");

    //create a function to return our connection
    public MySqlConnection getConnection()
    {
        return connection;
    }

    //create a function to open the connection
    public void openConnection()
    {
        if (connection.State == ConnectionState.Closed)
        {
            connection.Open();

        }
    }

    //create a function to close the connection
    public void closeConnection()
    {
        if (connection.State == ConnectionState.Open)
        {
            connection.Close();

        }
    }
}

private void buttonLogin_Click(object sender, EventArgs e)
{
    CONNECT conn = new CONNECT();
    DataTable table = new DataTable();
    MySqlDataAdapter adapter = new MySqlDataAdapter();
    MySqlCommand command = new MySqlCommand();
    String query = "SELECT * FROM `users` WHERE `username`=@usn AND `password`=@pass";

    command.CommandText = query;
    command.Connection = conn.getConnection();

    command.Parameters.Add("@usn", MySqlDbType.VarChar).Value = textBoxUsername.Text;
    command.Parameters.Add("@pass", MySqlDbType.VarChar).Value = textBoxPassword.Text;

    adapter.SelectCommand = command;
    adapter.Fill(table); //this line is the FileNotFoundException was unhandled


    // if the username and the password exists
    if (table.Rows.Count > 0)
    {
        this.Hide();
        MessageBox.Show("YES");
        Main_Form mform = new Main_Form();
        mform.Show();
    }
    else
    {

        if (textBoxUsername.Text.Trim().Equals(""))
        {
            MessageBox.Show("Enter Your Username to Login", "Empty Username", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else if (textBoxPassword.Text.Trim().Equals(""))
        {
            MessageBox.Show("Enter Your Password to Login", "Empty Password", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else
        { 
            MessageBox.Show("Username and Password Doesn't Exists", "Wrong Data", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

Im trying to connect to the database MySql but this error was appeared

FileNotFoundException was unhandled

in the line of adapter.Fill.

FileNotFoundException was unhandled Could not load file or assembly ‘Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106’ or one of its dependencies. The system cannot find the file specified

class CONNECT
{
    private MySqlConnection connection = new MySqlConnection("Datasource=localhost;Port=3306;Username=root;Password=;Database=Csharp_Hotel_DB");

    //create a function to return our connection
    public MySqlConnection getConnection()
    {
        return connection;
    }

    //create a function to open the connection
    public void openConnection()
    {
        if (connection.State == ConnectionState.Closed)
        {
            connection.Open();

        }
    }

    //create a function to close the connection
    public void closeConnection()
    {
        if (connection.State == ConnectionState.Open)
        {
            connection.Close();

        }
    }
}

private void buttonLogin_Click(object sender, EventArgs e)
{
    CONNECT conn = new CONNECT();
    DataTable table = new DataTable();
    MySqlDataAdapter adapter = new MySqlDataAdapter();
    MySqlCommand command = new MySqlCommand();
    String query = "SELECT * FROM `users` WHERE `username`=@usn AND `password`=@pass";

    command.CommandText = query;
    command.Connection = conn.getConnection();

    command.Parameters.Add("@usn", MySqlDbType.VarChar).Value = textBoxUsername.Text;
    command.Parameters.Add("@pass", MySqlDbType.VarChar).Value = textBoxPassword.Text;

    adapter.SelectCommand = command;
    adapter.Fill(table); //this line is the FileNotFoundException was unhandled


    // if the username and the password exists
    if (table.Rows.Count > 0)
    {
        this.Hide();
        MessageBox.Show("YES");
        Main_Form mform = new Main_Form();
        mform.Show();
    }
    else
    {

        if (textBoxUsername.Text.Trim().Equals(""))
        {
            MessageBox.Show("Enter Your Username to Login", "Empty Username", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else if (textBoxPassword.Text.Trim().Equals(""))
        {
            MessageBox.Show("Enter Your Password to Login", "Empty Password", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else
        { 
            MessageBox.Show("Username and Password Doesn't Exists", "Wrong Data", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

Правильно ли я подключаюсь к БД?

При подключение выходит ошибка на adapter.Fill(table);

using MySql.Data.MySqlClient;
...
    private void buttonOk_Click(object sender, EventArgs e)
    {
        timer2.Start();
    }

    public static string Datasource = "localhost";
    public static string Port = "3306";
    public static string InitialCatalog = "user";
    public static string Username = "user";
    public static string Password = "pass";

    //MySql
    MySqlConnection connection = new MySqlConnection("datasource=" + Datasource + ";port=" + Port + ";Initial Catalog='" + InitialCatalog + "';username=" + Username + ";password=" + Password);
    MySqlDataAdapter adapter;
    DataTable table = new DataTable();

    public void MySqlConnect()
    {
        adapter = new MySqlDataAdapter("SELECT `username`, `password` FROM `users` WHERE `username` = '" + textBoxUsername.Text + "' AND `password` = '" + textBoxPassword.Text + "'", connection);
        adapter.Fill(table); //PROBLEM

        if (table.Rows.Count <= 0)
        {
            panel1.Height = 0;
            labelMessage.ForeColor = Color.Red;
            labelMessage.Text = "Username Or Password Are Invalid";
            timer1.Start();
        }
        else
        {
            panel1.Height = 0;
            labelMessage.ForeColor = Color.Green;
            labelMessage.Text = "Login Successfully";
            timer1.Start();
        }

        table.Clear();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (panel1.Height != 100)
        {
            panel1.Height = panel1.Height + 5;
            if (panel1.Height == 100)
            {
                timer1.Stop();
            }
        }
    }

    private void timer2_Tick(object sender, EventArgs e)
    {
        if (panel1.Height != 0)
        {
            panel1.Height = panel1.Height - 5;
            if (panel1.Height == 0)
            {
                timer2.Stop();
            }
        }
    }

    private void checkBoxShowPass_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBoxShowPass.Checked)
        {
            textBoxPassword.UseSystemPasswordChar = true;
        }
        else
        {
            textBoxPassword.UseSystemPasswordChar = false;
        }
    }
...

Текст ошибки

MySql.Data.MySqlClient.MySqlException
  HResult=0x80004005
  Сообщение = Authentication to host 'localhost' for user 'user' using method 'mysql_native_password' failed with message: Access denied for user 'user'@'localhost' (using password: YES)
  Источник = MySql.Data
  Внутреннее исключение 1:
MySqlException: Access denied for user 'user'@'localhost' (using password: YES)

Извините, если я размещаю это не в том разделе, я понятия не имею, как это работает, и я полный нуб в кодировании. Я, однако, увлечен и мне нужна помощь. Я быстро отвечу на любые ваши вопросы, ребята, чтобы предоставить дополнительную информацию. Без лишних слов, вот мой код. Я объясню проблему ниже.

Imports System.Data.SqlClient
Imports System.Data

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim connection As New SqlConnection("Server = M's PC; Database = tyre_stocks_database_plain1.accdb; Integrated Security = true")

    Dim command As New SqlCommand("select * from Login_info where Username = @Username and Password = @Password", connection)

    command.Parameters.Add("@Username", SqlDbType.VarChar).Value = TextBoxUsername.Text.ToString()
    command.Parameters.Add("@Password", SqlDbType.VarChar).Value = TextBoxPassword.Text.ToString()


    Dim adapter As New SqlDataAdapter(command)

    Dim table As New DataTable()

    adapter.Fill(table)

    If table.Rows.Count() <= 0 Then
        MessageBox.Show("Username Or Password Is Invalid")

    Else

        MessageBox.Show("Login Successful")


    End If

End Sub
End Class

Я получаю сообщение об ошибке «adapter.Fill (table)». В программе говорится:

«System.Data.SqlClient.SqlException:» Ошибка, связанная с сетью или конкретным экземпляром, произошла при установлении соединения с SQL Server. Сервер не был найден или был недоступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 — не удалось открыть подключение к SQL Server) ‘»

Если это все еще немного неясно, я пытаюсь создать страницу входа в систему, которая «разрешает вход» пользователю, при условии, что у них есть правильное имя пользователя и пароль, которые хранятся в базе данных.

Я убедился, что соединение с моей базой данных Microsoft Access активно, проверив наличие зеленого знака вилки рядом с именем базы данных. Если бы кто-нибудь мог предоставить какую-либо информацию о том, как помочь, я был бы очень благодарен. Пожалуйста, имейте в виду, что я новичок в кодировании и, следовательно, полный новичок (как упоминалось ранее: P), я незамедлительно отвечу на любые вопросы, чтобы предоставить дополнительную информацию. Спасибо товарищам кодировщикам!

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near » at line 1

Ошибка выскакивает в adapter.Fill(table); (35 строка).
После попытки выбора второй строки … или при попытке изменения выбранного пункта в первой строке … В datagridview1 — см строки 54-68
Думал проблема связана с MySQL — переустановил — не помогло.

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 AdvancedWizardControl.Wizard;
using AdvancedWizardControl.WizardPages;
using AdvancedWizardControl.Enums;
using AdvancedWizardControl.EventArguments;
using AdvancedWizardControl;
using Dapper;
using MySql.Data.MySqlClient;
using System.Diagnostics;
using System.IO;

 
namespace IT_A_stroy
{
    public partial class WizardPageEventArgs : Form
    {
        public int PreviousPage { get; set; }
        //DataSet ds;
        MySqlDataAdapter adapter;
        readonly string connectionString = «server=localhost;user=root;database=a_stroy;password=q1w2e3r4t5y6u7i8o9p0;»;
        //string sql_1 = «select Progess, Progress_info from a_stroy.step3 where 1=2»;
        public DataTable Execute(string script)
        {
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                DataTable table = new DataTable();
                connection.Open();
                adapter = new MySqlDataAdapter(script, connection);
                adapter.Fill(table);
                return table;
            }
        }

 
        private void СomboBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            if (comboBox1.SelectedValue != null)
            {
                column1.DataSource = Execute($«SELECT id_Object, id_customer, Name_object FROM a_stroy.object where id_customer = {comboBox1.SelectedValue};»);
                column1.DisplayMember = «Name_object»;
                column1.ValueMember = «id_Object»;
                int countRow = dataGridView1.RowCount == 1 ? 1 : dataGridView1.RowCount1;
                //int DGV1 = comboBox1.SelectedIndex;
                //ds.Tables[«step3»].Rows.Add(countRow);
            }
        }

 
        private void DataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            ComboBox cbDgv = e.Control as ComboBox;
            cbDgv.SelectedValueChanged -= CbDgv_SelectedValueChanged;
            cbDgv.SelectedValueChanged += CbDgv_SelectedValueChanged;
        }

 
        private void CbDgv_SelectedValueChanged(object sender, EventArgs e)
        {
            ComboBox box = sender as ComboBox;
            Debug.WriteLine(box.SelectedValue);
            column2.DataSource = Execute($«SELECT id_Object, Name_works FROM a_stroy.words_object where id_Object = {box.SelectedValue}»);
            column2.DisplayMember = «Name_works»;
            column2.ValueMember = «id_Object»;
        }

 
        private void DataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           //
        }
 …


Прикрепленные файлы:
Attachment Icon Screenshot_11.jpg, Размер: 145,246 байт, Скачано: 118

Я пытаюсь подключиться к базе данных MySql, но эта ошибка появилась

FileNotFoundException не обработан

В строке adapter.Fill.

FileNotFoundException не обработано. Не удалось загрузить файл или сборку ‘Renci.SshNet, версия = 2016.1.0.0, культура = нейтральная, PublicKeyToken = 1cee9f8bde3db106’ или одна из ее зависимостей. Система не может найти указанный файл

class CONNECT
{
    private MySqlConnection connection = new MySqlConnection("Datasource=localhost;Port=3306;Username=root;Password=;Database=Csharp_Hotel_DB");

    //create a function to return our connection
    public MySqlConnection getConnection()
    {
        return connection;
    }

    //create a function to open the connection
    public void openConnection()
    {
        if (connection.State == ConnectionState.Closed)
        {
            connection.Open();

        }
    }

    //create a function to close the connection
    public void closeConnection()
    {
        if (connection.State == ConnectionState.Open)
        {
            connection.Close();

        }
    }
}

private void buttonLogin_Click(object sender, EventArgs e)
{
    CONNECT conn = new CONNECT();
    DataTable table = new DataTable();
    MySqlDataAdapter adapter = new MySqlDataAdapter();
    MySqlCommand command = new MySqlCommand();
    String query = "SELECT * FROM `users` WHERE `username`=@usn AND `password`=@pass";

    command.CommandText = query;
    command.Connection = conn.getConnection();

    command.Parameters.Add("@usn", MySqlDbType.VarChar).Value = textBoxUsername.Text;
    command.Parameters.Add("@pass", MySqlDbType.VarChar).Value = textBoxPassword.Text;

    adapter.SelectCommand = command;
    adapter.Fill(table); //this line is the FileNotFoundException was unhandled


    // if the username and the password exists
    if (table.Rows.Count > 0)
    {
        this.Hide();
        MessageBox.Show("YES");
        Main_Form mform = new Main_Form();
        mform.Show();
    }
    else
    {

        if (textBoxUsername.Text.Trim().Equals(""))
        {
            MessageBox.Show("Enter Your Username to Login", "Empty Username", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else if (textBoxPassword.Text.Trim().Equals(""))
        {
            MessageBox.Show("Enter Your Password to Login", "Empty Password", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else
        { 
            MessageBox.Show("Username and Password Doesn't Exists", "Wrong Data", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

4 ответа

Лучший ответ

Кажется, что вы не обрабатываете исключения, которые адаптер. использовать:

try{
    adapter.Fill(table);
} catch(FileNotFoundException e) {
    do stuff with e or your code
}

В качестве альтернативы проверьте пути, если они существуют, прежде чем использовать их.


0

Dharman
1 Окт 2019 в 11:07

Вы создаете таблицу данных, не передавая имя в конструктор. Это означает, что таблица безымянна, и поэтому, когда вы пытаетесь вызвать Fill для безымянной таблицы, вы получаете исключение для вашего файла.

Вы должны передать имя таблицы

DataTable table = new DataTable("users");


0

Xerith
1 Окт 2019 в 08:33

Это ошибка в MySQL Connector / NET, ошибка 96614. Это будет исправлено в Connector / NET 8.0.18.

Исправлено в следующей версии MySQL Connector / NET 8.0.18, и вот запись в журнале изменений:

Развертывание Renci.SshNet.dll было проблематичным для установок MSI Connector / NET 8.0.17. Некоторые приложения, такие как Microsoft Excel, не смогли прочитать данные MySQL в результате. Это исправление удаляет ненужные зависимости от DLL, а также гарантирует, что установка MSI развертывает правильный файл Renci.SshNet.dll в GAC.

Обходной путь, который вы можете использовать сегодня, — это переключиться на MySqlConnector, альтернативную библиотеку OSS ADO.NET для MySQL, которая не имеет эта ошибка


0

Bradley Grainger
1 Окт 2019 в 23:55

Сейчас работает c. Использование MySQL-connector-net-6.3.5 может исправить эту ошибку или проблему, потому что я использую .net 4

Спасибо за помощь.


1

Haroldo Gondim
1 Окт 2019 в 11:48

Я пытаюсь заполнить данные с помощью SqlDataAdapter на С #. Я не очень знаком с объектами и в основном работаю над шаблоном чужого кода, чтобы попытаться понять, как он работает. Вот основная форма.

        SqlCommand command = new SqlCommand(@"SELECT * FROM tblEmployees WHERE Name = " + firstSSN,connection);

        SqlDataAdapter adapter = new SqlDataAdapter(command.CommandText.ToString(), connection.ConnectionString.ToString());

        SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter);
        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;
        adapter.Fill(table);

И это отлично работает с их формой. Я попытался сделать то же самое со своим, но получил ошибку при попытке преобразовать nvarchar в столбец с типом данных int. Я просмотрел MSDN и попробовал следующее: 1) Добавление столбцов в DataTable с соответствующими именами / типами / первичными ключами от tblEmployees. 2) Добавление TableMapping в DataAdapter, хотя я не на 100% уверен, что правильно владею синтаксисом в этой части. Я делаю:

adapter.TableMappings.Add("work", "dbo.tblEmployees");

для этого. DataTable называется «работа», но я не уверен, правильно ли я владею синтаксисом, я ввел имя таблицы, как оно отображается в SQL Server Management Studio, но не знаю, как я проверяю, правильно ли оно соединяется.

Спасибо за любую помощь, которую вы можете предоставить. Я забивал себе голову над этим до такой степени, что стою на грани того, чтобы подойти к своей цели совершенно по-другому и выбросить то, что у меня есть.

Skip to content

  • ТВикинариум
  • Форум
  • Поддержка
  • PRO
  • Войти

ФорумXpucT2022-08-18T02:06:35+03:00

Вы должны войти, чтобы создавать сообщения и темы.

Не работает INSERT INTO (MySQL c#)

Цитата: Клякнутый кля от 09.10.2022, 19:38

Всем доброго, не могу понять, почему

код

command = new MySqlCommand("INSERT INTO `users`(`login`, `password`) VALUES (@uL, @uP)", db.GetConnection()); // Команда SQL
                command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = login; 
                command.Parameters.Add("@uP", MySqlDbType.VarChar).Value = password; 

                adapter.SelectCommand = command; // Выполняем команду

                return "Пользователь создан";

не работает
Возвращается «Пользователь создан», но пользователя нет в БД
Если вписать запрос в PHPMyAdmin, то сработает (конечно если заменить @uL, @uP)
Почему запрос не выполняется?

Помогите

Всем доброго, не могу понять, почему

command = new MySqlCommand("INSERT INTO `users`(`login`, `password`) VALUES (@uL, @uP)", db.GetConnection()); // Команда SQL
                command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = login; 
                command.Parameters.Add("@uP", MySqlDbType.VarChar).Value = password; 

                adapter.SelectCommand = command; // Выполняем команду

                return "Пользователь создан";

не работает
Возвращается «Пользователь создан», но пользователя нет в БД
Если вписать запрос в PHPMyAdmin, то сработает (конечно если заменить Скопировано@uL, @uP)
Почему запрос не выполняется?

Помогите

Голосуйте — палец вниз.0Голосуйте — палец вверх.0

Profile photo ofAdler

Цитата: Adler от 09.10.2022, 20:22

Добрый день.
Очевидно же, что SelectCommand служит для выполнения запросов типа SELECT, а для INSERT используется InsertCommand
И по хорошему возврат типа создан / не создан нужно выдавать на основании какой-то проверки, например через тот-же SELECT 

Добрый день.
Очевидно же, что SelectCommand служит для выполнения запросов типа СкопированоSELECT, а для СкопированоINSERT используется InsertCommand
И по хорошему возврат типа создан / не создан нужно выдавать на основании какой-то проверки, например через тот-же СкопированоSELECT 

Голосуйте — палец вниз.0Голосуйте — палец вверх.2

Лайкнули XpucT и Клякнутый кля

Цитата: Клякнутый кля от 09.10.2022, 20:26

Спасибо, но не помогло

Спасибо, но не помогло

Голосуйте — палец вниз.0Голосуйте — палец вверх.0

Profile photo ofAdler

Цитата: Adler от 09.10.2022, 20:46

Посмотрел в одном своем старом проекте. Там это сделано так:

Это копипаст в упрощенном виде из хоть и не завершенного, но рабочего проекта (в исходном коде INSERT выполняется в цикле с ~75млн записей 😊) в качестве примера.

P.S. Вставил в качестве скриншота, т.к. плагин для подсветки и форматирования кода ломается на некоторых @

Посмотрел в одном своем старом проекте. Там это сделано так:

Это копипаст в упрощенном виде из хоть и не завершенного, но рабочего проекта (в исходном коде INSERT выполняется в цикле с ~75млн записей 😊) в качестве примера.

P.S. Вставил в качестве скриншота, т.к. плагин для подсветки и форматирования кода ломается на некоторых @

Голосуйте — палец вниз.0Голосуйте — палец вверх.0

Цитата: Клякнутый кля от 09.10.2022, 21:16

Не помогло(

Прикол в том что проверка на зарегистрированный аккаунт работает

Весь метод

public string Register(string login, string password)
        {
            DB db = new DB();
            DataTable table = new DataTable();
            
            MySqlDataAdapter adapter = new MySqlDataAdapter();
            
            MySqlCommand command = new MySqlCommand("SELECT * FROM `users` WHERE `login` = @uL", db.GetConnection()); // Команда SQL
            command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = login; // Заменяем заклёпки
            
            adapter.SelectCommand = command; // Выполняем команду
            adapter.Fill(table); // Получаем информацию из выполненной команды

            if (table.Rows.Count == 1) // Если, есть в таблице пользователь с указанными данными
                return "Пользователь не зарегистрирован, такой пользователь уже существует";
            else
            {
                command = new MySqlCommand("INSERT INTO `users`(`login`, `password`) VALUES (@uL, @uP)", db.GetConnection()); // Команда SQL
                command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = login;
                command.Parameters.Add("@uP", MySqlDbType.VarChar).Value = password;

                adapter.InsertCommand = command; // Выполняем команду

                return "Пользователь зарегистрирован";
            }    
        }

  

Не помогло(

Прикол в том что проверка на зарегистрированный аккаунт работает

public string Register(string login, string password)
        {
            DB db = new DB();
            DataTable table = new DataTable();
            
            MySqlDataAdapter adapter = new MySqlDataAdapter();
            
            MySqlCommand command = new MySqlCommand("SELECT * FROM `users` WHERE `login` = @uL", db.GetConnection()); // Команда SQL
            command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = login; // Заменяем заклёпки
            
            adapter.SelectCommand = command; // Выполняем команду
            adapter.Fill(table); // Получаем информацию из выполненной команды

            if (table.Rows.Count == 1) // Если, есть в таблице пользователь с указанными данными
                return "Пользователь не зарегистрирован, такой пользователь уже существует";
            else
            {
                command = new MySqlCommand("INSERT INTO `users`(`login`, `password`) VALUES (@uL, @uP)", db.GetConnection()); // Команда SQL
                command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = login;
                command.Parameters.Add("@uP", MySqlDbType.VarChar).Value = password;

                adapter.InsertCommand = command; // Выполняем команду

                return "Пользователь зарегистрирован";
            }    
        }

Голосуйте — палец вниз.0Голосуйте — палец вверх.0

Profile photo ofAdler

Цитата: Adler от 09.10.2022, 21:22

У вас вероятно каша между db, table и adapter.
Не понятно, как это все между собой соотносится, не понятно что такое DB() и зачем вам там DataTable.

У вас вероятно каша между db, table и adapter.
Не понятно, как это все между собой соотносится, не понятно что такое DB() и зачем вам там DataTable.

Голосуйте — палец вниз.0Голосуйте — палец вверх.0

Profile photo ofHurbatov

Цитата: Иван от 10.10.2022, 14:49

Добрый день.
Попробуйте использовать для вашей переменной MySqlCommand (command) метод ExecuteNonQuery. Он выполнит инструкцию для подключения, в Вашем случае, выполнит команду INSERT. 
Ну, а возвращает значение он в любом случе, потому что это у вас единственный путь и он единственно верный. Чтобы возвращал ошибку, можно попробовать использовать try:catch или проверять выполнение ExecuteNonQuery и в случае, если он не вернет значение задействонных строк, то выдавать ошибку, иначе успех. 

использование insert с офф. сайта

System.Data.SqlClient.SqlConnection sqlConnection1 = 
    new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')";
cmd.Connection = sqlConnection1;

sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();

Тут я бы вставил всё в using 🙂

Источник

Вообще, очень рекомендовал бы использовать EntityFramework для работы с MS SQL Server, для общего развития посоветовал бы почитать. Возможно он понравится Вам больше, нежели стандартныеустаревшие средства.

Не удержался и показал как регистрация выглядит на Entity

шпоньк

using (UserContext db = new UserContext())
                                {
                                        User user = new Users();
                                        user.login = loginString;
                                        user.password = passwordString;
                                        await db.SaveChangesAsync();
                                        return "Успех";
                                }

Писал на скорую руку, так что не сделал то, что сам указывал сверху. Однако это актуальный вариант работы с фреймворком. Чтобы сделать проверку на существование пользователя достаточно одной строки User user = db.Users.Find(id); или любой аналог поиска при помощи Linq.

Надеюсь был полезен. Желаю удачи!

Добрый день.
Попробуйте использовать для вашей переменной MySqlCommand (command) метод ExecuteNonQuery. Он выполнит инструкцию для подключения, в Вашем случае, выполнит команду INSERT. 
Ну, а возвращает значение он в любом случе, потому что это у вас единственный путь и он единственно верный. Чтобы возвращал ошибку, можно попробовать использовать try:catch или проверять выполнение ExecuteNonQuery и в случае, если он не вернет значение задействонных строк, то выдавать ошибку, иначе успех. 

использование insert с офф. сайта

System.Data.SqlClient.SqlConnection sqlConnection1 = 
    new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')";
cmd.Connection = sqlConnection1;

sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();

Тут я бы вставил всё в using 🙂

Источник

Вообще, очень рекомендовал бы использовать EntityFramework для работы с MS SQL Server, для общего развития посоветовал бы почитать. Возможно он понравится Вам больше, нежели стандартныеустаревшие средства.

Не удержался и показал как регистрация выглядит на Entity

using (UserContext db = new UserContext())
                                {
                                        User user = new Users();
                                        user.login = loginString;
                                        user.password = passwordString;
                                        await db.SaveChangesAsync();
                                        return "Успех";
                                }

Писал на скорую руку, так что не сделал то, что сам указывал сверху. Однако это актуальный вариант работы с фреймворком. Чтобы сделать проверку на существование пользователя достаточно одной строки СкопированоUser user = db.Users.Find(id); или любой аналог поиска при помощи Linq.

Надеюсь был полезен. Желаю удачи!

Голосуйте — палец вниз.0Голосуйте — палец вверх.1

Цитата: Клякнутый кля от 10.10.2022, 16:00

Огромное спасибо
Вот

код

command = new MySqlCommand("INSERT INTO `users`(`login`, `password`) VALUES (@uL, @uP)", db.GetConnection()); // Запрос SQL
                {
                    db.OpenConnection();
                    command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = login; // Заменяем заклёпки
                    command.Parameters.Add("@uP", MySqlDbType.VarChar).Value = password; // Заменяем заклёпки // Заменяем заклёпки (сложнее взломать)

                    command.ExecuteNonQuery();
                    db.CloseConnection();
                }

                return "Пользователь зарегистрирован";

С EntityFramework возникли сложности установить в проект, поэтому я по старинке)

Огромное спасибо
Вот

command = new MySqlCommand("INSERT INTO `users`(`login`, `password`) VALUES (@uL, @uP)", db.GetConnection()); // Запрос SQL
                {
                    db.OpenConnection();
                    command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = login; // Заменяем заклёпки
                    command.Parameters.Add("@uP", MySqlDbType.VarChar).Value = password; // Заменяем заклёпки // Заменяем заклёпки (сложнее взломать)

                    command.ExecuteNonQuery();
                    db.CloseConnection();
                }

                return "Пользователь зарегистрирован";

С EntityFramework возникли сложности установить в проект, поэтому я по старинке)

Голосуйте — палец вниз.0Голосуйте — палец вверх.1

Понравилась статья? Поделить с друзьями:
  • Acrobat ошибка 114
  • Adapter construct 2 ошибка
  • Acgeneral dll ошибка
  • Acrobat sl exe системная ошибка
  • Acvalhalla exe системная ошибка d3d12 dll