当我在数据库表中插入名称时,我正在使用此代码来检查和防止重复的名称。因此,如果名称存在,它将阻止插入,并将显示一个MessageBox警告名称存在。如果没有,则显示MessageBox,确认操作已完成。
string Coonstring = "datasource=localhost;port=3306;username=root;password=****;Charset=utf8";
using (MySqlConnection connectionDatabase = new MySqlConnection(Coonstring))
{
try
{
connectionDatabase.Open();
using (MySqlCommand select = new MySqlCommand("SELECT COUNT(*) FROM project.name_registry WHERE Name=@NM", connectionDatabase))
{
select.Parameters.AddWithValue("@NM", txt.Text);
if (select.ExecuteScalar() != 0)
{
MessageBox.Show("Name exists");
return;
}
}
using (MySqlCommand cmddata = new MySqlCommand("INSERT INTO project.name_registry (name) VALUES(@NM)", connectionDatabase))
{
cmddata.Parameters.AddWithValue("@NM", txt.Text);
cmddata.ExecuteNonQuery();
MessageBox.Show("Done");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我的问题是当我运行上面的代码时,会抛出以下错误
指定的演员表无效。
这是什么意思?
答案 0 :(得分:1)
if (select.ExecuteScalar() != 0)
{
MessageBox.Show("Name exists");
return;
}
使用
if(int.Parse(select.ExecuteScalar()) !=0)
答案 1 :(得分:0)
使用解析或强制转换
if ((Int32)select.ExecuteScalar() != 0)
{
MessageBox.Show("Name exists");
return;
}
或
if(int.parse(select.ExecuteScalar().ToString())!=0)
{
MessageBox.Show("Name exists");
return;
}
答案 2 :(得分:0)
两者都有解析
if (int.Parse(select.ExecuteScalar()) != 0)
{
MessageBox.Show("Name exists");
return;
}
或者施放
if (((int)select.ExecuteScalar()) != 0)
{
MessageBox.Show("Name exists");
return;
}
应该有用。
答案 3 :(得分:0)
也许是这样的?
var count = 0;
var obj = select.ExecuteScalar();
if(obj != null)
{
count = Convert.ToInt32(obj);
if(count != 0)
{
MessageBox.Show("Name exists");
return;
}
}
else
{
throw new Excepion();
}