Wychwycenie błędy w składni

0

Witam, mam prostą bazę w Excelu i :

Klasa odpowiadająca za połączenie:

 
public class Database
    {
        public static System.Data.OleDb.OleDbConnection connection;

        public static void Connect()
        {
                connection = new OleDbConnection();
                connection.ConnectionString = "PROVIDER=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + "\\database.accdb";
                connection.Open();
        }
    }

Klasę abstrkacyjną ( jeszcze nie gotowa do końca ):

abstract class Table: Database
    {
        public string querySql;

        public void Add()
        {
            OleDbCommand Command = new OleDbCommand(querySql, connection);
            Command.ExecuteNonQuery(); 
        }

        public void Delete() { }
        public void Update() { }
    }
 

Dziedziczy ona klasę Database.

Wywołuje połączenie w kodzie:

Database.Connect(); 

i pod Buttonem dodaję przykładowy rekord:

 
Employee newEmployee = new Employee();
newEmployee.querySql = "INSERT INTO Employees (namee, surname, number) VALUES ('Jan','Kowalski','003')";
newEmployee.Add();

Wyskakuje mi błąd o złej składni INSERT INTO jak mogę zlokalizować usterkę skoro wydaje mi się, że polecenie SQL jest w porządku?

0

namee a nie name
BTW daj DOKŁADNIE co Ci wyskakuje razem z INNER EXCEPTION

0

namee ponieważ Acces to "syf" i przestrzegał przed polem "name" :-)

Oto błąd:

Message=Błąd składniowy w instrukcji INSERT INTO.
Source=Microsoft Office Access Database Engine
ErrorCode=-2147217900

INNER EXCEPTION:

jest pusty :-)

0

jest jeszcze taka opcja, że muszą być " zamiast '
newEmployee.querySql = "INSERT INTO Employees (namee, surname, number) VALUES (\"Jan\",\"Kowalski\",\"003\")";

0

Nie sądzę bo w innych programach moim tak działa bez problemu. Wywołuje kontrolnie MessageBox i niby do metoda Add zawiera odpowiedni string, także nie mam pojęcia o co chodzi.

0

Próbowałeś to konkretne polecenie wykonać bezpośrednio w Accessie?

0

Zadziałało w ten sposób:

Wywala błąd przez ten fragment:

Employees (namee, surname, number) 

Ale takie pola na 100% istnieją i dla mnie to żenua... Jakieś propozycje?

Pozdrawiam

0

Dobra, to jest działający fragment:

            string querySql = "Insert Into Employees ([namee], [surname], [number]) Values  (@namee, @surname, @number)";
            OleDbCommand Command = new OleDbCommand(querySql, connection);
            Command.Parameters.Add(@"namee", "Jan");
            Command.Parameters.Add(@"surname", "kowalski");
            Command.Parameters.Add(@"number", "222");
            Command.ExecuteNonQuery();
 

Jak widać w inny sposób je dodaję i brakowało nawiasów kwadratowych.

Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1