Правильно ли я подключаюсь к БД?
При подключение выходит ошибка на 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)
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; } } } } |
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.
Привет!
вот пытаюсь подключиться к базе данных, но выдает такую ошибку —
и еще эту же ошибку выводит в такой строке
*****
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»;
Привет!
вот пытаюсь подключиться к базе данных, но выдает такую ошибку —
и еще эту же ошибку выводит в такой строке
*****
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.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);
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)
{
//
}
…
Прикрепленные файлы:
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
Цитата: 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
Цитата: 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
Цитата: Adler от 09.10.2022, 21:22
У вас вероятно каша между db, table и adapter.
Не понятно, как это все между собой соотносится, не понятно что такое DB() и зачем вам там DataTable.
У вас вероятно каша между db, table и adapter.
Не понятно, как это все между собой соотносится, не понятно что такое DB() и зачем вам там DataTable.
Голосуйте — палец вниз.0Голосуйте — палец вверх.0
Цитата: Иван от 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