Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL/C#插入问题_C#_Mysql - Fatal编程技术网

MySQL/C#插入问题

MySQL/C#插入问题,c#,mysql,C#,Mysql,不知道这是怎么回事 //Setup MySQL private MySqlConnection datconnection = new MySqlConnection(); //private MySqlDataAdapter datdata = new MySqlDataAdapter(); DataGrid datgridInfo = new DataGrid(); int connect; private Form_NewEnquiry frm_pa

不知道这是怎么回事

//Setup MySQL
    private MySqlConnection datconnection = new MySqlConnection();
    //private MySqlDataAdapter datdata = new MySqlDataAdapter();
    DataGrid datgridInfo = new DataGrid();
    int connect;
    private Form_NewEnquiry frm_parent;

    public Form_AddVenue(Form_NewEnquiry frm1)
    {
        InitializeComponent();
        frm_parent = frm1;
    }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        connect = 0;
        try
        {
                datconnection.ConnectionString =
                "server=127.0.0.1;"
                + "database=as;"
                + "uid=a;"
                + "password=a;";
                connect = 1;
        }
        catch (Exception)
        {
            MessageBox.Show("Connection Unavailable");
        }


        //INSERT SQL Code to Insert Venue
        if (connect == 1)
        {
            try
            {
                datconnection.Open();
                MySqlCommand command = new MySqlCommand("INSERT INTO venues (venue_name,venue_address1,venue_address2,venue_town,venue_county,venue_postcode,venue_telephone,venue_fax,venue_email,venue_web,venue_maxguests) VALUES (?,?,?,?,?,?,?,?,?,?,?)", datconnection);
                command.Parameters.Add("name", MySqlDbType.VarChar, 45, tbName.Text.ToString());
                command.Parameters.Add("address1", MySqlDbType.VarChar, 45, tbAddress1.Text.ToString());
                command.Parameters.Add("address2", MySqlDbType.VarChar, 45, tbAddress2.Text.ToString());
                command.Parameters.Add("town", MySqlDbType.VarChar, 45, tbTown.Text.ToString());
                command.Parameters.Add("county", MySqlDbType.VarChar, 45, tbCounty.Text.ToString());
                command.Parameters.Add("postcode", MySqlDbType.VarChar, 10, tbPostcode.Text.ToString());
                command.Parameters.Add("telephone", MySqlDbType.VarChar, 15, tbTelephone.Text.ToString());
                command.Parameters.Add("fax", MySqlDbType.VarChar, 15, tbFax.Text.ToString());
                command.Parameters.Add("email", MySqlDbType.VarChar, 255, tbEmail.Text.ToString());
                command.Parameters.Add("web", MySqlDbType.VarChar, 255, tbWeb.Text.ToString());
                command.Parameters.Add("maxguests", MySqlDbType.Int32, 11, nudNoOfGuests.Value.ToString());
                command.ExecuteNonQuery();
                //datdata.InsertCommand = command;
            }
            catch (Exception eea)
            {
                MessageBox.Show("Error storing data");
                MessageBox.Show(eea.ToString());
                connect = 0;
            }
            finally
            {
                datconnection.Close();
            }
        }
        if (connect == 1)
        {
            MessageBox.Show("Data Saved");

            //Print

            //Close Window
            frm_parent.reloadVenue();
            this.Close();
        }
    }

这给了我一个错误System.FormatException:索引(基于零)必须大于或等于零且小于参数列表的大小。

某些数据的大小似乎大于您指定的参数的大小。比如说

command.Parameters.Add("name", MySqlDbType.VarChar, 45, tbName.Text);
tbName.Text字符串的大小小于45。那么使用

command.Parameters.Add("name", MySqlDbType.VarChar, tbName.Text.Length, tbName.Text);

某些数据的大小似乎大于您指定的参数的大小。比如说

command.Parameters.Add("name", MySqlDbType.VarChar, 45, tbName.Text);
tbName.Text字符串的大小小于45。那么使用

command.Parameters.Add("name", MySqlDbType.VarChar, tbName.Text.Length, tbName.Text);

您不需要Text属性上的ToString(),它已经是字符串了,请避免使用它

这需要一个int参数,您要传入一个字符串,请使用Convert.ToInt32传入值


通常,这些错误是由于声明和传递给命令的参数数量不同而发生的,但在您的情况下似乎没有问题。什么类型的控件是nudNoOfGuests可能是导致格式错误的原因

您不需要文本属性上的ToString(),它已经是一个字符串,请避免使用它

这需要一个int参数,您要传入一个字符串,请使用Convert.ToInt32传入值


通常,这些错误是由于声明和传递给命令的参数数量不同而发生的,但在您的情况下似乎没有问题。什么类型的控件是nudNoOfGuests可能是导致格式错误的原因

哪一行引发异常?在
命令处。ExecuteNonQuery()我通过在不使用command.Parameters.Add的情况下对SQL字符串进行编码解决了这个问题(相反,SQL字符串将值串联在一起。我知道这样做会有SQL注入的风险,但是这只是一个小的内部系统。哪一行引发异常?在
命令.ExecuteNonQuery()处);
我通过在不使用command.Parameters.Add的情况下对SQL字符串进行编码(而是将SQL字符串的值连接起来。我知道这样做会有SQL注入的风险,但是这只是一个小型的内部系统。嘿,感谢您的帮助-但是.Value.ToString()必须作为参数存在。Add始终希望第四个参数是字符串。将其更改为
命令.Parameters.Add(“maxguests”,MySqlDbType.Int32,11,10);
抛出一个“参数4无法从int转换为字符串”我同意,但是,ToString()文本属性上不需要-force of habbitSo nudNoOfGuests返回一个有效值?是-但是,即使在此故障扫描中硬编码一个整数字符串,您也可以通过将参数更改为?name、?address1、?address2…等等来尝试相同的操作嘿,感谢您的帮助-但是.value.ToString()必须作为参数存在。Add始终希望第四个参数是字符串。将其更改为
命令.Parameters.Add(“maxguests”,MySqlDbType.Int32,11,10);
抛出一个“参数4无法从int转换为字符串”我同意,但是,ToString()文本属性上不需要-force of habbitSo nudNoOfGuests返回一个有效值?是-但是,即使在此故障扫描中硬编码一个整数字符串,您也可以通过将参数更改为?name、?address1、?address2…等来尝试相同的操作您好,谢谢您-但是,当更改相同的错误时,会抛出。我使用了静态长度这是MySQL的长度,因此当值比MySQL可以接受的长度长时会抛出一个适当的异常。您好,谢谢您,但是当更改时会抛出相同的错误。我在这里使用了静态长度,因为这是MySQL的长度,因此当值比MySQL的长度长时会抛出一个适当的异常接受