Access 2003 VS 2010 C#
请有人帮我怎么做其他声明。我使用if语句检查是否存在重复记录,并且在使用insert命令参数时我正在努力研究如何使用else语句。提前致谢
这是
的方法 OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
using (var command = myCon.CreateCommand())
{
command.CommandText = "select * from SomeTable where ID = @ID";
command.Parameters.AddWithValue("ID", int.Parse(txtID.Text));
myCon.Open();
var reader = command.ExecuteReader();
{
if (reader.HasRows)
{
while (reader.Read())
{
txtID.Text = reader["ID"].ToString();
}
} MessageBox.Show("ID Already exist");
else (reader.HasRows !=null // need here pls.
{
cmd.CommandText = "INSERT INTO SomeTable (ID, AgeGroup, Gender) VALUES (@ID, @AgeGroup, @Gender)";
cmd.Parameters.AddWithValue("@ID", txtID.Text);
cmd.Parameters.AddWithValue("@AgeGroup", cBAgeGroup.Text);
cmd.Parameters.AddWithValue("@Gender", cBGender.Text);
cmd.Connection = myCon;
cmd.ExecuteNonQuery();
}
}
}
// cmd.Connection = myCon;
// cmd.ExecuteNonQuery();
myCon.Close();
更新2 我在else语句中移动了cmd连接和cmd.ExecuteNonQuery。我能够检查id是否已存在并能够插入新记录。所以代码正在执行它应该是。
谢谢大家的建议。
答案 0 :(得分:2)
MessageBox
不属于if
和else
之间,您可以直接使用else
:
if (reader.HasRows)
{
while (reader.Read())
{
txtID.Text = reader["ID"].ToString();
}
} MessageBox.Show("ID Already exist"); // <--- remove this here
else (reader.HasRows !=null // need here pls. // <--- remove this here
然后将消息框放入if
,您已检测到存在具有给定ID的行:
if (reader.HasRows)
{
MessageBox.Show("ID Already exist");
// ...
然后您可以使用在else
中插入新记录,因为您已经知道HasRows
的反面是“没有行”:
else
{
cmd.CommandText = "INSERT INTO SomeTable (ID, AgeGroup, Gender) VALUES (@ID, @AgeGroup, @Gender)";
// ...
但是,我不确定这是否是您代码中唯一的问题。
更新实际上还有其他问题,请看看这个完全重构的代码:
string selectSql = "SELECT * FROM SomeTable WHERE ID = @ID";
string insertSql = "INSERT INTO SomeTable (ID, AgeGroup, Gender) VALUES (@ID, @AgeGroup, @Gender)";
int id;
if (!int.TryParse(txtID.Text, out id))
MessageBox.Show("ID must be an integer.");
else
{
using (var myCon = new OleDbConnection(connectionString))
{
bool idExistsAlready = true;
using (var selectCommand = new OleDbCommand(selectSql, myCon))
{
selectCommand.Parameters.AddWithValue("@ID", id);
myCon.Open();
using (var reader = selectCommand.ExecuteReader())
idExistsAlready = reader.HasRows;
}
if (idExistsAlready)
MessageBox.Show("ID exists already.");
else
{
using (var insertCommand = new OleDbCommand(insertSql, myCon))
{
insertCommand.Parameters.AddWithValue("@ID", id);
insertCommand.Parameters.AddWithValue("@AgeGroup", cBAgeGroup.Text);
insertCommand.Parameters.AddWithValue("@Gender", cBGender.Text);
int affectedRecords = insertCommand.ExecuteNonQuery();
}
}
}
}