我正在创建一个可以将音频插入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();
}
}
有人有解决方案吗?
答案 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();
}
}