【问题标题】:ADO.NET Error when executing SQL statement [closed]执行 SQL 语句时出现 ADO.NET 错误 [关闭]
【发布时间】:2014-07-28 14:58:39
【问题描述】:

我尝试创建一个登录名并注册。当我尝试登录或以注册表单提交时,我有 DB_Connectivity 和查询类,但出现错误

错误您的 sql 语法有错误检查与您的 Mysql 服务器版本相对应的手册,以便在 [User Name] 附近使用正确的语法,Password From signup Where [User Name] = username1 ...... ...在第 1 行

注册异常也会发生同样的情况,在 line1 处抛出“未知错误......”

这是DB_Connectivity

 class DB_Connectivity
    {
        private string myconnection;
        private string server;
        private string database;
        private string uid;
        private string password;
        public MySqlConnection conn;

        public DB_Connectivity()
        {
            Initialize();
        }

        public void Initialize()
        {
            server = "localhost";
            database = "my_project_data";
            uid = "root";
            password = "";

            myconnection = "SERVER = " + server + ";" + "DATABASE =" + database + ";" + "UID =" + uid + ";" + "PASSWORD =" + password + ";";

            conn = new MySqlConnection(myconnection);
        }

        public void openConnection()
        {
            try
            {
                conn.Open();
            }

            catch (MySqlException ms)
            {
                System.Windows.Forms.MessageBox.Show("Error Occured " + ms.Message);
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(" Error Please Contact Administrator " +ex.Message);
            }
        }

        public void closeConnection()
        {
            try
            {
                conn.Close();
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(" Unexpected Error " +ex.Message);
            }

        }
    }

这是查询类

class Queries :DB_Connectivity
{
        private MySqlCommand cmd;
        private MySqlDataReader datar;
        private string sql_query;

        public void insertIntoSignup(string firstname, string lastname, string address, string phone, string email, string username, string password )
        {
            try
            {
                sql_query = "Insert Into my_project_data.signup([First Name],[Last Name],Address,Phone,E-Mail,[User Name],Password) Values('"+firstname+"','"+lastname+"','"+address+"','"+phone+"','"+email+"','"+username+"','"+password+"')";

                openConnection();
                cmd = new MySqlCommand(sql_query, conn);
                datar = cmd.ExecuteReader();
                closeConnection();
            }
            catch(Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("Ooooops Error "  +ex.Message);
            }
        }

        public void userlogchech(string username1, string password1)
        {
            try
            {
                sql_query = "Select [User Name],Password From signup Where [User Name] = username1 AND Password = password1";

                openConnection();
                cmd = new MySqlCommand(sql_query, conn);
                datar = cmd.ExecuteReader();

                if (datar.Read())
                {
                    if (username1 != "")
                    {
                        System.Windows.Forms.MessageBox.Show("User Name Alredy Exists", "Error");
                    }
                    else if (password1 != "")
                    {
                        System.Windows.Forms.MessageBox.Show("Password Already Exists");
                    }
                    else
                    {
                        datar.Close();
                        System.Windows.Forms.MessageBox.Show("Welcome to German Moters");
                    }
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Try Again Later");
                    conn.Close();
                }
            }
            catch(Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(" Unknown Error " +ex.Message);
            }
        }
    }

登录按钮

 private void Log_btn_Click(object sender, EventArgs e)
        {
            if (User_Name_txt.Text != "" && mask_Password_txt.Text != "")
            {
                Classes.Queries qua = new Classes.Queries();
                qua.userlogchech(User_Name_txt.Text, mask_Password_txt.Text);
            }
            else
            {
                MessageBox.Show("Please Enter Both User Name And Password");
            }
        }

注册表单中的提交按钮

  private void Submit_btn_Click(object sender, EventArgs e)
        {
            if (UserName_txt.Text != "" && mask1_password_txt.Text != "" && FName_txt.Text != "" && LName_txt.Text != "" && Address_txt.Text != "" && Phone_txt.Text != "" && Email_txt.Text != "")
            {

                Classes.Queries qu = new Classes.Queries();
                qu.insertIntoSignup(FName_txt.Text,LName_txt.Text,Address_txt.Text,Phone_txt.Text,Email_txt.Text, UserName_txt.Text,mask1_password_txt.Text );
            }
            else
            {
                MessageBox.Show("All Fields Must Be Filled ", "Error" ,MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }

【问题讨论】:

  • 请参阅How to create a Minimal Complete and Verifiable Example。你缺少“最小”的部分。我们不必深入研究您的所有代码,或猜测哪一行引发了异常。只提供重现问题所需的最少代码量。
  • 请选择一个更好的标题,I am a C# beginner so please help me to solve this不代表问题的内容。
  • 在您的userlogchech 方法中,User Name 列名中没有空格
  • 您还需要努力缩小问题范围。当问题只有几行时,反刍所有代码会使您的问题很难回答。英语可能不是你的第一语言,所以没什么大不了的,但它的 Q U E R Y,而不是 Q U A R Y。
  • 对不起我的愚蠢错误,我不会再这样做了,而且英语不是我的第一语言,所以对于拼写错误也很抱歉

标签: c# sql-server ado.net


【解决方案1】:

你有一个带空格的字段,User Name,用方括号将其更改为[User Name],然后为 First NameLast Name 做同样的事情等。您应该尽量避免在字段名称中使用空格,将它们替换为 UserNameFirstName 等。

【讨论】:

  • 我尝试了你的([用户名])方式,但它仍然给了我同样的错误
  • @Hasiya55,您还用空格更改了其他字段?
  • yes [User Name] , [First Name] and [Last Name] 但它仍然给我错误(我还使用您的方法编辑了有问题的代码)
  • Phone 是数据库中的字符串值吗?您是否尝试过直接在数据库上运行完全相同的查询?
  • No phone Is an Integer value in database ********** 当我将此代码作为 Insert Into my_project_data.signup Values('"+firstname+"','"+lastname+ "','"+address+"','"+phone+"','"+email+"','"+username+"','"+password+"')" 它正在工作,但值在错误的列中(名字在用户名中,姓在密码中......就像那样)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 2012-11-07
相关资源
最近更新 更多