尝试向MySQL表输入数据时发生未处理的异常

时间:2019-07-06 10:15:40

标签: c# mysql

我是使用Visual Basic Community 2015学习C#和MySql的新手,我试图制作简单的CRUD,但是我在运行程序并尝试向MySql Table输入数据时感到困惑,因为它始终显示消息

  

在MySql.Data.dll中发生了类型为'MySql.Data.MySqlClient.MySqlException'的未处理异常

其他信息:

  

您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取在'Siswa,Total Biaya SPP,Sisa Bayar SPP,Keterangan)值附近使用的正确语法

对此有什么解决办法吗?

public partial class Crud : Form
    {
        MySqlConnection conn = new MySqlConnection("Server=localhost;User Id=root;Password='';Database=db_csharp1");
        MySqlDataAdapter adapter = new MySqlDataAdapter();
        MySqlCommand command = new MySqlCommand();
        public DataSet ds = new DataSet();

    public Crud()
    {
        InitializeComponent();
    }

    private void Crud_Load(object sender, EventArgs e)
    {
        GetRecords();
    }

    private void btnTambah_Click(object sender, EventArgs e)
    {
        ds = new DataSet();
        adapter = new MySqlDataAdapter ("INSERT INTO siswa (NIS,Nama Siswa,Total Biaya SPP,Sisa Bayar SPP,Keterangan) VALUES ('"+textNIS.Text+"','"+textNamaSiswa.Text+"','"+textBiayaSPP.Text+"','"+textSisaBayar.Text+"','"+textKeterangan+"')", conn);
        adapter.Fill(ds,"siswa");
        MessageBox.Show("Added!");
        textNIS.Clear();
        textNamaSiswa.Clear();
        textBiayaSPP.Clear();
        textSisaBayar.Clear();
        textKeterangan.Clear();
        GetRecords();
    }
    private void GetRecords()
    {
        ds = new DataSet();
        adapter = new MySqlDataAdapter("select * from siswa", conn);
        adapter.Fill(ds, "siswa");

        dataGridView1.DataSource = ds;
        dataGridView1.DataMember = "siswa";
    }

2 个答案:

答案 0 :(得分:0)

根据您的情况,您可以使用参数化查询来填充您的Dataset。现在,由于用于初始化SqlDataAdapter的字符串成为CommandText的{​​{1}}属性的SelectCommand。因此,您可以像这样添加参数:

SqlDataAdapter

不确定字段adapter = new MySqlDataAdapter ("INSERT INTO siswa (`NIS`,`Nama Siswa`,`Total Biaya SPP`,`Sisa Bayar SPP`,`Keterangan`) VALUES (@textNIS,@textNamaSiswa,@textBiayaSPP,@textSisaBayar,@textKeterangan)", conn); adapter.SelectCommand.Parameters.AddWithValue("@textNIS","%" + textNIS.Text + "%"); adapter.SelectCommand.Parameters.AddWithValue("@textNamaSiswa","%" + textNamaSiswa.Text + "%"); adapter.SelectCommand.Parameters.AddWithValue("@textBiayaSPP","%" + textBiayaSPP.Text + "%"); adapter.SelectCommand.Parameters.AddWithValue("@textSisaBayar","%" + textSisaBayar.Text + "%"); adapter.SelectCommand.Parameters.AddWithValue("@textKeterangan","%" + textKeterangan + "%"); 的值应为textKeterangan还是textKeterangan.Text。你可以照顾这个。

答案 1 :(得分:0)

列名中有空格。在列名中使用`。

INSERT INTO siswa (`NIS`,`Nama Siswa`,`Total Biaya SPP`,`Sisa Bayar SPP`,`Keterangan`)