简体   繁体   English

文本框数据未添加到数据库

[英]Textbox data is not adding to the database

I'm currently practicing to make a barcode attendance application.我目前正在练习制作条形码考勤应用程序。 After scanning the barcode, the barcode is automatically showing in a text box.扫描条码后,条码会自动显示在文本框中。 There is a add button to send the barcode to the database.有一个添加按钮可以将条形码发送到数据库。 But when I click the add button only a blank dataset is adding.(It's working when directly type in the textbox)但是当我单击添加按钮时,只会添加一个空白数据集。(直接在文本框中输入时它正在工作)

private void VideoCaptureDevice_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
    {
        Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
        BarcodeReader reader = new BarcodeReader();
        var result = reader.Decode(bitmap);
        if (result != null)
        {
            textBox1.Invoke(new MethodInvoker(delegate ()
            {
                textBox1.Text = result.ToString();
               
            }));
        }
        pictureBox1.Image = bitmap;
    }

Here is the add button code这是添加按钮代码

 private void button1_Click(object sender, EventArgs e)
    {
        cmd = new MySqlCommand();
        cmd.CommandText = "insert into student_att (`id`, `nic`, `name`, `address`, `number`, `batch`) select* from student_dt where nibm_id like '" + textBox1.Text + "%'";


        if (textBox1.Text == "")
        {
            MessageBox.Show("Please provide all data");
        }
        else
        {
            con.Open();
            cmd.Connection = con;
            cmd.ExecuteNonQuery();
            con.Close();
            MessageBox.Show("Data Inserted");

            string Query = "select * from student_att ;";
            MySqlCommand MyCommand2 = new MySqlCommand(Query, con);
            MySqlDataAdapter MyAdapter = new MySqlDataAdapter();
            MyAdapter.SelectCommand = MyCommand2;
            DataTable dTable = new DataTable();
            MyAdapter.Fill(dTable);
            dataGridView2.DataSource = dTable;

        }
        try
        {
            textBox1.Text = string.Empty;
         
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

应用程序设计

1st of all, your queries are quite weird, when you do INSERT, I dont see anywhere what do you actually insert (no data specified in your code), it should be like:首先,您的查询很奇怪,当您执行 INSERT 时,我在任何地方都看不到您实际插入了什么(代码中没有指定数据),应该是这样的:

private void button1_Click(object sender, EventArgs e)
{
    if(textBox1.Text!=string.Empty)
    {
        //using means it will close and dispose the classes by it self! So no need to type Close() or Dispose() methods.
        using (SqlConnection conn = new SqlConnection("ConnectionStringHere"))
        {
            bool bAllOK = false; //using and helping with some custom flag to get it all right
            string query1 = @"INSERT INTO student_att (id, nic, name, address, number, batch) VALUES (@id, @nic, @name, @address, @number, @batch)";
            string query2 = @"SELECT * FROM studetnt_att WHERE nibm_id LIKE @myText%";
            
            //1. INSERT:
            using (SqlCommand cmd = new SqlCommand(query1, conn))
            {                           
                cmd.Parameters.AddWithValue("@id", 1); //get new ID, best is to look for the last one in the DB, and increment by 1
                cmd.Parameters.AddWithValue("@nic", "nickname1"); //get his nick name 
                //same way and and set all the other 4 parameters for name, address, number and batch here
                try
                {
                    connection.Open();
                    command.ExecuteNonQuery();
                    bAllOK = true;
                }
                catch(SqlException)
                {
                    // error here if occures
                }
            }
            
            if(bAllOK)
            {
                //2. SELECT:
                using (SqlCommand cmd = new SqlCommand(query2, conn))
                {                       
                    cmd.Parameters.AddWithValue("@myText", textBox1.Text);
                    DataTable table = new DataTable();
                    using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                    {
                        da.Fill(table);
                        dataGridView2.DataSource = table;
                    }
                }   
            }
        }
    }
    else
        MessageBox.Show("Please type some name...");
}

The 2nd query makes no sence, since you are looking for nibm_id is looking for IDS which starts with the number in textBox.第二个查询没有意义,因为您正在寻找 nibm_id 正在寻找以文本框中的数字开头的 IDS。 Is that really what you are looking for?这真的是你要找的吗? LIKE SOMETHING% means that it looks for SOMETHINGS which starts with that. LIKE SOMETHING% 表示它会查找以此开头的 SOMETHINGS。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM