列数据不能为null c#mysql

时间:2014-09-19 12:01:01

标签: c# mysql

我正在创建一个可以将音频插入mysql数据库的程序(我使用的是中等数据类型)但是当我点击插入按钮时它显示错误“列数据不能为空”。这是我的代码:

private void buttonBrowse_Click(object sender, EventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Filter = "WAV Audio Files|*.wav|M4A Audio Files|*.m4a";
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            textBoxBrowse.Text = ofd.FileName;
        }
    }

    private void buttonSimpan_Click(object sender, EventArgs e)
    {
        OdbcConnection con = new OdbcConnection(Program.konek);
        OdbcCommand com = new OdbcCommand("insert into audio(data) values(@voice)", con);
        byte[] stream = File.ReadAllBytes(@textBoxBrowse.Text);
        MessageBox.Show(stream.ToString());
        if (stream.Length > 0)
        {
            com.Parameters.AddWithValue("@voice", stream);
            con.Open();
            int result = com.ExecuteNonQuery();
            if (result > 0)
                MessageBox.Show("insert done");
            con.Close();
        }
    }

有人有解决方案吗?

1 个答案:

答案 0 :(得分:0)

来自MSDN OdbcParameter Class

  

当CommandType设置为Text时,ODBC的.NET Framework数据提供程序不支持将命名参数传递给SQL语句或OdbcCommand调用的存储过程。在其中任何一种情况下,请使用问号(?)占位符。例如:

因此,请更改您的查询

OdbcCommand com = new OdbcCommand("insert into audio(data) values(?)", con);
byte[] stream = File.ReadAllBytes(@textBoxBrowse.Text);
    MessageBox.Show(stream.ToString());
    if (stream.Length > 0)
    {
        com.Parameters.AddWithValue("voice", stream);
        con.Open();
        int result = com.ExecuteNonQuery();
        if (result > 0)
            MessageBox.Show("insert done");
        con.Close();
    }
}