MYSQL создает таблицу, не создавая все поля

#c# #mysql #wpf

#c# #mysql #wpf

Вопрос:

У меня есть класс, который создает все таблицы, необходимые для моего приложения. Проблема, с которой я сталкиваюсь, заключается в том, что создаются не все поля. Код выполняется без каких-либо ошибок. Даже с помощью Try Catch он не переходит к блоку catch, показывая, что код выполнен успешно.

Код делает это для всего раздела create table моего кода, где он пропустит последние два поля, которые он должен создать.

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

 string CreateSuppliers = "CREATE TABLE IF NOT EXISTS SUPPLIERS (SupplierName Char(50), SypplierType Char(50), SupplierPaid Float, SupplierOwed Float, DateCaptured Char(50))";
        string CreatePaymentsReceived = "CREATE TABLE IF NOT EXISTS PaymentsReceived (CustomerName Char(50), ReferenceNumber Char(50), AmountPaid Float, AmountDue Float, PaymentType Char(50), PaymentVat Float, ProofOfPayment Char(255), DateCaptured Char(50), DateOnInvoice Char(50))";
        string CreatePaymentsPaid = "CREATE TABLE IF NOT EXISTS PaymentsMade (CustomerName Char(50), ReferenceNumber Char(50), AmountPaid Float, AmountDue Float, PaymentType Char(50), PaymentVat Float, ProofOfPayment Char(255), DateCaptured Char(50), DateOnInvoice Char(50))";
        string CreateReturns = "CREATE TABLE IF NOT EXISTS Returns (CustomerName Char(50), ReferenceNumber Char(50), AmountPaid Float, AmountDue Float, PaymentType Char(50), ProofOFPayment Char(255), DateCaptured Char(50), DateOnInvoice Char(50))";
        string CreateEmployeeSalary = "CREATE TABLE IF NOT EXISTS EmployeeSalary (EmployeeName Char(50), EmployeeNumber Char(50), EmployeeSalaryPaid Float, EmployeeSalayDue Float, PaymentType Char(50), ProofOfPayment Char(255), DateCaptured Char(50), DateOnInvoice Char(50))";
        string CreateDirectorInvestment = "CREATE TABLE IF NOT EXISTS DirectorInvestment (Date Char(50), ReferenceNumber Char(50), AmountPaid Float, PaymentType Char(50), DateCaptured Char(50))";
        string CreateDirectorWithdraw = "CREATE TABLE IF NOT EXISTS DirectorWithdraw (Date Char(50), ReferenceNumber Char(50), AmountWithdraw Float, PaymentType Char(50), DateCaptured Char(50))";
        string CreateCustomerAccounts = "CREATE TABLE IF NOT EXISTS CustomerAccounts (CustomerName Char(50), ReferenceNumber Char(50), AccountTypeDays Float, ContractPapers Char(50))";
        string CreateJournal = "CREATE TABLE IF NOT EXISTS Journal (JournalName Char(50), ReferenceNumber Char(50),PaymentMade Float, PaymentReceived Float, FromAccount Char(50), DateCaptured Char(50), DateOnInvoice Char(50))";
        string CreateExpenses = "CREATE TABLE IF NOT EXISTS Expenses (InvoiceNumber Char(50),Company Char(50), AmountPaid Float, AmountDue Float, PaymentType Char(50), PaymentVat Float, ProofOfPayment Char(50), MonthlyPayment Char(50), DateCaptured Char(50), DateOnOnvoice Char(50))";
        string CreateUserAccounts = "CREATE TABLE IF NOT EXISTS AccountingUsers (UserName Char(50), Password Char(255),AdminLevel Char(50), LastLogin Char(50))";

       

        MySqlConnection conDatabase = new
        MySqlConnection(serverstring);
        MySqlCommand cmdDatabase = new MySqlCommand(CreateSuppliers, conDatabase);
        MySqlCommand cmdDatabase2 = new MySqlCommand(CreatePaymentsReceived, conDatabase);
        MySqlCommand cmdDatabase3 = new MySqlCommand(CreatePaymentsPaid, conDatabase);
        MySqlCommand cmdDatabase4 = new MySqlCommand(CreateReturns, conDatabase);
        MySqlCommand cmdDatabase5 = new MySqlCommand(CreateEmployeeSalary, conDatabase);
        MySqlCommand cmdDatabase6 = new MySqlCommand(CreateDirectorInvestment, conDatabase);
        MySqlCommand cmdDatabase7 = new MySqlCommand(CreateDirectorWithdraw, conDatabase);
        MySqlCommand cmdDatabase8 = new MySqlCommand(CreateCustomerAccounts, conDatabase);
        MySqlCommand cmdDatabase9 = new MySqlCommand(CreateJournal, conDatabase);
        MySqlCommand cmdDatabase10 = new MySqlCommand(CreateUserAccounts, conDatabase);
        MySqlCommand cmdDatabase11 = new MySqlCommand(CreateExpenses, conDatabase);

        if (Properties.Settings.Default.firstLaunch == true)
        {
            string HashedPassword;
            HashPassword HP = new HashPassword();
            HP.password = "WonderConnect";
            HP.Hashingthepassword();
            HashedPassword = HP.HashedPassword;
            string cmdText = "INSERT INTO AccountingUsers(UserName, Password, AdminLevel) VALUES (@UserName, @Password, @AdminLevel)";
            MySqlCommand cmd = new MySqlCommand(cmdText, conDatabase);
            cmd.Parameters.AddWithValue("@UserName", "WonderConnect");
            cmd.Parameters.AddWithValue("@Password", HashedPassword);
            cmd.Parameters.AddWithValue("@AdminLevel", "Admin");

            try
            {
                conDatabase.Open();
                cmdDatabase.ExecuteNonQuery();
                cmdDatabase2.ExecuteNonQuery();
                cmdDatabase3.ExecuteNonQuery();
                cmdDatabase4.ExecuteNonQuery();
                cmdDatabase5.ExecuteNonQuery();
                cmdDatabase6.ExecuteNonQuery();
                cmdDatabase7.ExecuteNonQuery();
                cmdDatabase8.ExecuteNonQuery();
                cmdDatabase9.ExecuteNonQuery();
                cmdDatabase10.ExecuteNonQuery();
                cmdDatabase11.ExecuteNonQuery();
                cmd.ExecuteNonQuery();
                conDatabase.Close();
                Properties.Settings.Default.firstLaunch = false;
                Properties.Settings.Default.Save();
            }
            catch (Exception ex)
            {
                Errormsg =ex.Message;
            }
        }
        else
        {
            try
            {
                conDatabase.Open();
                cmdDatabase.ExecuteNonQuery();
                cmdDatabase2.ExecuteNonQuery();
                cmdDatabase3.ExecuteNonQuery();
                cmdDatabase4.ExecuteNonQuery();
                cmdDatabase5.ExecuteNonQuery();
                cmdDatabase6.ExecuteNonQuery();
                cmdDatabase7.ExecuteNonQuery();
                cmdDatabase8.ExecuteNonQuery();
                cmdDatabase9.ExecuteNonQuery();
                cmdDatabase10.ExecuteNonQuery();
                cmdDatabase11.ExecuteNonQuery();
                conDatabase.Close();

            }
            catch (Exception ex)
            {
                Errormsg =ex.Message;
            }
        }
  

Это что-то не так с кодом или мой MYSQL работает не так, как должен?

Комментарии:

1. Почему вы добавляете пустую строку в строку запроса? (Это не вызовет ошибки, но выглядит забавно и может указывать на то, что вы многое пропустили в том, что вы опубликовали?)

2. Примечание: еще раз подумайте о своих типах данных SQL. Например, вы используете char(50) для того, что кажется датами. Вы не должны этого делать, но используйте правильный тип даты.

3. спасибо, я изменю типы данных, но мне нужно знать, почему он не создает эти поля, как я уже сказал, ошибок при компиляции или запуске нет

4. Учитывая, что вы используете CREATE TABLE IF NOT EXISTS , вы уверены, что эти таблицы еще не существуют? Кроме того, последний столбец в Expenses is DateOnOnvoice , который, как я предполагаю, является опечаткой DateOnInvoice .

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