附近的语法错误:当连接到MySQL数据库

问题描述 投票:5回答:1

我读过很多线程的,但他们都不是实际工作,这就是为什么我要问一个新问题。

好了,所以我想将值插入我的MySQL数据库,但我得到的错误。

MySql.Data.MySqlClient.MySqlException:“您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的“商品说明,探测器,DetectorNos,问题1,问题2,SpecialPrec,OfficerSign,中”第1' 行正确的语法手册

我无法找到问题的所在。我一直在尝试了几个小时,没有任何结果,即使读取所有throught的百倍,但仍然没有运气。所以,我需要别人来看一看。

 public string detector = "";
    public string questions = "";
    public string question2 = "";
    public string capOrCheif = "";

    private void btn_send_Click(object sender, EventArgs e)
    {
        if(cbox_detectors_yes.Checked == true)
        {
            detector = "Yes";
        }
        if(cbox_yes1.Checked == true && cbox_yes3.Checked == true && cbox_yes4.Checked == true && cbox_yes5.Checked == true && cbox_yes6.Checked == true && cbox_yes7.Checked == true)
        {
            questions = "Yes";
        }
        if(cbox_yes2.Checked == true)
        {
            question2 = "Yes";
        }
        if(cbox_cheif.Checked == true)
        {
            capOrCheif = "Cheif Engineer";
        }
        else if(cbox_captain.Checked == true)
        {
            capOrCheif = "Captain";
        }
        else if(cbox_na2.Checked == true)
        {
            question2 = "N/A";
        }
        else if(cbox_detectors_na.Checked == true)
        {
            detector = "N/A";
        }

        string constring = "Server = **; Database = **; User Id = **; Password = ***; Sslmode = none;";
        string Query = "INSERT INTO tbl_permit (Username, Ship, Date, TimeFrom, TimeTo, Location, Desc, Detectors, DetectorNos, Question1, Question2, SpecialPrec, OfficerSign, OfficerName, OfficerPos, CheifSign, CheifName, CaptainSign, CaptainName, PrecAddedBy, PrecBox) values(@Username, @Ship, @Date, @TimeFrom, @TimeTo, @Location, @Desc, @Detectors, @DetectorNos, @Question1, @Question2, @SpecialPrec, @OfficerSign, @OfficerName, @OfficerPos, @CheifSign, @CheifName, @CaptainSign, @CaptainName, @PrecAddedBy, @PrecBox);";
        MySqlConnection con = new MySqlConnection(constring);
        MySqlCommand cmdDatabase = new MySqlCommand(Query, con);

        cmdDatabase.Parameters.Add("@Username", MySqlDbType.VarChar, 50).Value = login.username;
        cmdDatabase.Parameters.Add("@Ship", MySqlDbType.VarChar, 50).Value = txtbox_ship.Text;
        cmdDatabase.Parameters.Add("@Date", MySqlDbType.VarChar, 50).Value = txtbox_date.Text;
        cmdDatabase.Parameters.Add("@TimeFrom", MySqlDbType.VarChar, 50).Value = txtbox_timeFrom.Text;
        cmdDatabase.Parameters.Add("@TimeTo", MySqlDbType.VarChar, 50).Value = txtbox_timeTo.Text;
        cmdDatabase.Parameters.Add("@Location", MySqlDbType.VarChar, 50).Value = txtbox_location;
        cmdDatabase.Parameters.Add("@Desc", MySqlDbType.VarChar, 50).Value = txtbox_work_desc.Text;
        cmdDatabase.Parameters.Add("@Detectors", MySqlDbType.VarChar, 50).Value = detector;
        cmdDatabase.Parameters.Add("@DetectorNos", MySqlDbType.VarChar, 50).Value = txtbox_detector_desc.Text;
        cmdDatabase.Parameters.Add("@Question1", MySqlDbType.VarChar, 50).Value = questions;
        cmdDatabase.Parameters.Add("@Question2", MySqlDbType.VarChar, 50).Value = question2;
        cmdDatabase.Parameters.Add("@SpecialPrec", MySqlDbType.VarChar, 50).Value = txtbox_precautions.Text;
        cmdDatabase.Parameters.Add("@OfficerSign", MySqlDbType.VarChar, 50).Value = txtbox_officer_sign.Text;
        cmdDatabase.Parameters.Add("@OfficerName", MySqlDbType.VarChar, 50).Value = txtbox_officer_name.Text;
        cmdDatabase.Parameters.Add("@OfficerPos", MySqlDbType.VarChar, 50).Value = txtbox_officer_pos.Text;
        cmdDatabase.Parameters.Add("@CheifSign", MySqlDbType.VarChar, 50).Value = txtbox_cheif_sign.Text;
        cmdDatabase.Parameters.Add("@CheifName", MySqlDbType.VarChar, 50).Value = txtbox_cheif_name.Text;
        cmdDatabase.Parameters.Add("@CaptainSign", MySqlDbType.VarChar, 50).Value = txtbox_captain_sign.Text;
        cmdDatabase.Parameters.Add("@CaptainName", MySqlDbType.VarChar, 50).Value = txtbox_captain_name.Text;
        cmdDatabase.Parameters.Add("@PrecAddedBy", MySqlDbType.VarChar, 50).Value = capOrCheif;
        cmdDatabase.Parameters.Add("@PrecBox", MySqlDbType.VarChar, 50).Value = txtbox_restrictions.Text;

        MySqlDataReader myReader;
        if (cbox_read.Checked == true)
        {
            con.Open();
            myReader = cmdDatabase.ExecuteReader();
            while (myReader.Read())
            {
            }

            MessageBox.Show("Hot Work Permit Form has been sent to the Cheif Engineer");
        }
        else
        {
            MessageBox.Show("You have to read it through and accept it!");
        }

    }
c# mysql .net
1个回答
3
投票

DATE是不是保留字,尽管上面的评论。你可以在这里的保留字列表:https://dev.mysql.com/doc/refman/8.0/en/keywords.html

该网页列出的关键词,但其中只有一个子集被保留,在列表中的(R)注解来表示。

该错误消息告诉您哪个词引起解析器变得混乱:

...检查对应于你的MySQL服务器版本正确的语法使用近“说明,探测器的手册,...

它糊涂了这个词DESC。在MySQL语法错误总是告诉你查询的部分开始在它糊涂了点。

DESC是保留字在这种情况下产生的一个问题。 DESC在关键字列表我挂(R)注解。

你应该界定标识符与保留字冲突:

string Query = "INSERT INTO tbl_permit (... Location, `Desc`, Detectors, ...
© www.soinside.com 2019 - 2024. All rights reserved.