System data oledb oledbexception ошибка синтаксиса в предложении from

Пытаюсь выводить данные из базы данных. Думал запрос неправильно на выборку написал, но упростив запрос максимально получаю одну и ту же ошибку (System.Data.OleDb.OleDbException: «Ошибка синтаксиса в предложении FROM.»)

фото базы данных
введите сюда описание изображения
База находится в Debug, названия верно.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace directory
{
    public partial class Form1 : Form
    {

        public static string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb;";
        private OleDbConnection myConnection;
        public Form1()
        {
            InitializeComponent();

            myConnection = new OleDbConnection(connectString);

            myConnection.Open();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            string query = "SELECT * FROM Table";
                

            // создаем объект OleDbCommand для выполнения запроса к БД MS Access
            OleDbCommand command = new OleDbCommand(query, myConnection);

            // получаем объект OleDbDataReader для чтения табличного результата запроса SELECT
            OleDbDataReader reader = command.ExecuteReader();

            // очищаем listBox1
            listBox1.Items.Clear();

            // в цикле построчно читаем ответ от БД
            while (reader.Read())
            {
                // выводим данные столбцов текущей строки в listBox1
                listBox1.Items.Add(reader[0].ToString() + " " + reader[1].ToString() + " " + reader[2].ToString() + " " + reader[3].ToString() + " " + reader[4].ToString() + " " + reader[5].ToString() + " ");
            }

            // закрываем OleDbDataReader
            reader.Close();





        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
            textBox6.Clear();
        }


        //Составляем запрос на выборку
        string GetLike()
        {
            string fio, salary, place, notes, year, rank;

            fio = textBox1.Text;
            salary = textBox2.Text;
            place = textBox3.Text;
            notes = textBox4.Text;
            year = textBox5.Text;
            rank = textBox6.Text;

            int i = 0;


            string like = "";

            if (fio != null)
            {
                like += "fio LIKE '" + fio + "%'";
                i++;

            }                

            if (salary != null && i > 0)
            {
                like += " AND salary LIKE '" + salary + "%'";
                i++;
            }               
            else if(salary != null)
            {
                like += " salary LIKE '" + salary + "%'";
                i++;
            }

            if (place != null && i > 0)
            {
                like += " AND place LIKE '" + place + "%'";
                i++;
            }
            else if (place != null)
            {
                like += " place LIKE '" + place + "%'";
                i++;
            }

            if (notes != null && i > 0)
            {
                like += " AND notes LIKE '" + notes + "%'";
                i++;
            }
            else if (notes != null)
            {
                like += " notes LIKE '" + notes + "%'";
                i++;
            }

            if (year != null && i > 0)
            {
                like += " AND data_year LIKE '" + year + "%'";
                i++;
            }
            else if (year != null)
            {
                like += " year LIKE '" + year + "%'";
                i++;
            }

            if (rank != null && i > 0)
            {
                like += " AND rank LIKE '" + rank + "%'";
               
            }
            else if (year != null)
            {
                like += " year rank '" + rank + "%'";
                
            }

            return "where " + like;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            myConnection.Close();
        }
    }

}

Студворк — интернет-сервис помощи студентам

Здравствуйте! Делаю проект с БД access на языке C#. Прописала коды, вроде все верно, делаю по спец видео, но выдает постоянно ошибку в коде, а именно Ошибка синтаксиса в предложении FROM, либо отсутствует значение для одного или нескольких требуемых параметров. Не хочу долго писать, сразу вставлю код целиком. Мне кажется дело в наименовании таблицы «Личные данные пациента», может его нужно как-то выделять кавычками или квадратными скобками, или название таблицы должно быть равно одному слову. Это мои догадки… Я только начинаю изучать данный язык)))

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public partial class Form2 : Form
    {
        public static string connectString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = МИС КС.mdb";
        private OleDbConnection myConnection;
        public Form2()
        {
            InitializeComponent();
            myConnection = new OleDbConnection(connectString);
            myConnection.Open();
        }
 
        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            myConnection.Close();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "мИС_КСDataSet.Личные_данные_пациента". При необходимости она может быть перемещена или удалена.
            this.личные_данные_пациентаTableAdapter.Fill(this.мИС_КСDataSet.Личные_данные_пациента);
            // TODO: данная строка кода позволяет загрузить данные в таблицу "мИС_КСDataSet.Пациенты". При необходимости она может быть перемещена или удалена.
            this.пациентыTableAdapter.Fill(this.мИС_КСDataSet.Пациенты);
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            int kod = Convert.ToInt32(textBox1.Text);
            string query = "DELETE FROM Личные данные пациента WHERE [Код пациента] = " + kod;
            OleDbCommand command = new OleDbCommand(query, myConnection);
            command.ExecuteNonQuery();
            MessageBox.Show("Данные о пациенте удалены");
            this.личные_данные_пациентаTableAdapter.Fill(this.мИС_КСDataSet.Личные_данные_пациента);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            int kod = Convert.ToInt32(textBox2.Text);
            string query = "UPDATE Личные данные пациента SET Телефон = '" + textBox3.Text + "' WHERE [Телефон] = " + kod;
            OleDbCommand command = new OleDbCommand(query, myConnection);
            command.ExecuteNonQuery();
            MessageBox.Show("Телефон изменен");
            this.личные_данные_пациентаTableAdapter.Fill(this.мИС_КСDataSet.Личные_данные_пациента);
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            Form3 f3 = new Form3();
            f3.Owner = this;
            f3.Show();
            
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            this.личные_данные_пациентаTableAdapter.Fill(this.мИС_КСDataSet.Личные_данные_пациента);
        }
    }
}

Решила сразу полностью вставить свой код. Ошибку выдает в каждом ExecuteNonQuery

Заранее благодарю за помощь!

  • Remove From My Forums
  • Question

  • User-33331282 posted

    This code doesn’t work ( see error message below), help please…

            private bool initializeBilling(int billId){
                string qry = «Insert into billing (parid,bilid,spcid,bilcurrent,bilcurtrash,bilcursewer,bilcurpet,bilcurothers) » +
                             » select [space].parid,200501,[space].spcid,[rent].renrent,[rent].rentrash,[rent].rensewer,[rent].renpet,[rent].renother
    » +
                             » From space INNER JOIN rent ON [space].parid = [rent].parid and [space].spcid = [rent].spcid»;
                this.oleDbConn.Open();
                OleDbCommand myCommand = new OleDbCommand(qry, this.oleDbConn);
                myCommand.ExecuteNonQuery();
                return true;
            }

    Server Error in ‘/mhpbasic’ Application.
    ———————————————————————————

    Syntax error in FROM clause.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Data.OleDb.OleDbException: Syntax error in FROM clause.

    Source Error:

    Line 81:    this.oleDbConn.Open();Line 82:    OleDbCommand myCommand = new OleDbCommand(qry, this.oleDbConn);Line 83:    myCommand.ExecuteNonQuery();Line 84:    return true;Line 85:   }
     

    Source File: c:inetpubwwwrootmhpbasicbillprocessor.cs    Line: 83

    Stack Trace:

    [OleDbException (0x80040e14): Syntax error in FROM clause.]   System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object&
    executeResult)   System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)   System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)   System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior
    behavior, String method)   System.Data.OleDb.OleDbCommand.ExecuteNonQuery()   mhpbasic.BillProcessor.initializeBilling(Int32 billId) in c:inetpubwwwrootmhpbasicbillprocessor.cs:83   mhpbasic.BillProcessor.processBiliing()
    in c:inetpubwwwrootmhpbasicbillprocessor.cs:73   mhpbasic.TenantInfo.Button7_Click(Object sender, EventArgs e) in c:inetpubwwwrootmhpbasictenantinfo.aspx.cs:69   System.Web.UI.WebControls.Button.OnClick(EventArgs e)  
    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection
    postData)   System.Web.UI.Page.ProcessRequestMain()

Skip to content

Imports System.Data.OleDb
Imports System.Data

Public Class Form1
    Dim connection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersDimphOneDriveDesktopRichfield BSC IT --- 1st yearSecond SemesterProgramming 512AssignmentWinFormsApp1WinFormsApp1binDebugnet6.0-windowsDatabase2.accdb")
    '
    Private Sub btnLogin(sender As Object, e As EventArgs) Handles Button1.Click
        If txtUsername.Text = Nothing Or txtPassword.Text = Nothing Then
            MsgBox("Enter Credentials", MsgBoxStyle.Exclamation)
        Else
            If connection.State = ConnectionState.Closed Then
                connection.Open()
            End If

            Dim cmd As New OleDbCommand("select count(*) from User where UserName=? and Password=?", connection)
            cmd.Parameters.AddWithValue("@1", OleDbType.VarChar).Value = txtUsername.Text
            cmd.Parameters.AddWithValue("@2", OleDbType.VarChar).Value = txtPassword.Text
            Dim count = Convert.ToInt32(cmd.ExecuteScalar())

            If (count > 0) Then
                SplashSCreen.Show()
            Else
                MsgBox("Account not found on Database")
            End If
        End If
    End Sub

    Private Sub btnReset(sender As Object, e As EventArgs) Handles Button2.Click

    End Sub

    Private Sub btnSignUp(sender As Object, e As EventArgs) Handles Button3.Click
        Form2.Show()
        Me.Hide()
    End Sub

    Private Sub btnClose(sender As Object, e As EventArgs) Handles Button4.Click
        Me.Close()

    End Sub
End Class

>Solution :

User and Password are both reserved words and using them as object names can confuse the db engine. If you can’t rename them, you can bracket them in your SQL so the db engine understands you’re referring to objects.

select count(*) from [User] where UserName=? and [Password]=?

Or you could do it this way with fewer brackets:

select count(*) from [User] AS u where u.UserName=? and u.Password=?

Всем успешного дня!

Пытаюсь сделать выборку из MS Access в c#, при этои появляется «Ошибка синтаксиса в предложении From».
В чем может быть дело?

В Access «свой» синтаксис создания запросов?

       OleDbConnection oleConn = new OleDbConnection();
            
            try
            {
                
                oleConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + dbFilePath;
                oleConn.Open();                
                
                String selectQuery = "SELECT * FROM rates ";                

                OleDbDataAdapter da = new OleDbDataAdapter();
                da.SelectCommand = new OleDbCommand(selectQuery, oleConn);

                DataSet ds = new DataSet();
                da.Fill(ds);

                this.dataGridView1.DataSource = ds.DefaultViewManager;               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                oleConn.Close();
                oleConn.Dispose();
            }

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:

А>Какая ошибка?

«Ошибка синтаксиса в предложении From»

Здравствуйте, Аноним, Вы писали:

А>Всем успешного дня!


А>Пытаюсь сделать выборку из MS Access в c#, при этои появляется «Ошибка синтаксиса в предложении From».

А>В чем может быть дело?

Скорее всего в БД не существует таблица rates или нужно убрать пробел в конце запроса.

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, Аноним, Вы писали:

А>>Какая ошибка?

А>»Ошибка синтаксиса в предложении From»

Попробовал использовать ваш код — у меня ошибки не происходит. Может проблемы в драйверах БД(тех, что Provider=Microsoft.Jet.OLEDB.4.0)??
Есть возможность проверить проект на другой машине?

Здравствуйте, anton_t, Вы писали:

_>Здравствуйте, Аноним, Вы писали:


А>>Всем успешного дня!


А>>Пытаюсь сделать выборку из MS Access в c#, при этои появляется «Ошибка синтаксиса в предложении From».

А>>В чем может быть дело?

_>Скорее всего в БД не существует таблица rates или нужно убрать пробел в конце запроса.

Оказалось все гораздо проще:
Наименование таблицы в запросе должно быть взято в квадратные скобки:
String selectQuery = «SELECT * FROM [rates] «;

Connection в данном случае не надо ни открывать, ни закрывать. Адаптер сделает это самостоятельно

Понравилась статья? Поделить с друзьями:
  • System componentmodel win32exception ошибка при создании дескриптора окна
  • System cmos checksum bad default configuration used ошибка
  • System ck ошибка карриер 1300
  • System check in progress ошибка на ленд
  • System aggregateexception произошла одна или несколько ошибок