我是使用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";
}
答案 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`)