gpt4 book ai didi

c# - 执行选择命令后插入命令参数的 if/else 语句 c#?

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:32 25 4
gpt4 key购买 nike

Access 2003VS 2010 C#

请谁能帮我做一个 else 语句。我已经使用 if 语句检查是否存在重复记录,并且在使用插入命令参数时我还在努力研究如何使用 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 是否已经存在并且能够插入新记录。所以代码正在按应有的方式执行。

谢谢大家的建议。

最佳答案

MessageBox 不属于ifelse 之间,您可以直接使用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();
}
}
}
}

关于c# - 执行选择命令后插入命令参数的 if/else 语句 c#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15661860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com