使用检查数据 reader 中的空值更新 table
Update table using check null value from data reader
我在 tableemail 上的两列电子邮件和状态我使用数据 reader 来计算邮件地址和发送邮件:
> OleDbCommand cmd = null;
> OleDbCommand cmd2 = null;
>
> string queryString = "select email,status from tableemail";
> using (OleDbConnection connection = new OleDbConnection("Provider = OraOLEDB.Oracle.1; Data Source = xe;
> Password=eppspps;User ID = xpress; unicode=true"))
> {
> OleDbCommand command= new OleDbCommand(queryString, connection);
> connection.Open();
> cmd = new OleDbCommand(queryString);
> cmd.Connection = connection;
> OleDbDataReader reader = cmd.ExecuteReader();
>
> while (reader.Read())
>
> {
> MailAddress to = new MailAddress(reader[0].ToString());
> message.To.Add(to);
> }
此代码运行良好,但是
检查数据的空值后,我需要将状态数据更新到 tablemail reader
> if (!reader.IsDBNull(1))
> {
> cmd2 = new OleDbCommand(" UPDATE tableemail set status=1 where status is null", connection);
> cmd2.ExecuteNonQuery();
> }
我想你可以尝试只使用cmd
来做select
和update
,然后删除if If(!reader.IsDBNull(1))
并将update
代码移到外部循环。
OleDbCommand cmd = null;
string queryString = "select email,status from tableemail";
using (OleDbConnection connection = new OleDbConnection("Provider = OraOLEDB.Oracle.1; Data Source = xe;
Password=eppspps;User ID = xpress; unicode=true"))
{
OleDbCommand command= new OleDbCommand(queryString, connection);
connection.Open();
cmd = new OleDbCommand(queryString);
cmd.Connection = connection;
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MailAddress to = new MailAddress(reader[0].ToString());
message.To.Add(to);
}
cmd.CommandText = " UPDATE tableemail set status=1 where status is null";
cmd.ExecuteNonQuery();
}
编辑
如果你想在 while 循环中使用 update
你可以尝试使用另一个 OleDbCommand
并在 if
中执行更新
string queryString = "select email,status from tableemail";
string updateString = "UPDATE tableemail set status=1 where email = @email";
using (OleDbConnection connection = new OleDbConnection("Provider = OraOLEDB.Oracle.1; Data Source = xe;
Password=eppspps;User ID = xpress; unicode=true"))
{
connection.Open();
OleDbCommand cmd = new OleDbCommand(queryString,Connection);
OleDbCommand cmd2 = new OleDbCommand(updateString,Connection);
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MailAddress to = new MailAddress(reader[0].ToString());
message.To.Add(to);
if(!reader.IsDBNull(1)){
cmd2.Parameters.Clear();
cmd2.Parameters.Add(new OleDbParameter("email", reader["email"]));
cmd2.ExecuteNonQuery();
}
}
}
我在 tableemail 上的两列电子邮件和状态我使用数据 reader 来计算邮件地址和发送邮件:
> OleDbCommand cmd = null;
> OleDbCommand cmd2 = null;
>
> string queryString = "select email,status from tableemail";
> using (OleDbConnection connection = new OleDbConnection("Provider = OraOLEDB.Oracle.1; Data Source = xe;
> Password=eppspps;User ID = xpress; unicode=true"))
> {
> OleDbCommand command= new OleDbCommand(queryString, connection);
> connection.Open();
> cmd = new OleDbCommand(queryString);
> cmd.Connection = connection;
> OleDbDataReader reader = cmd.ExecuteReader();
>
> while (reader.Read())
>
> {
> MailAddress to = new MailAddress(reader[0].ToString());
> message.To.Add(to);
> }
此代码运行良好,但是
检查数据的空值后,我需要将状态数据更新到 tablemail reader
> if (!reader.IsDBNull(1))
> {
> cmd2 = new OleDbCommand(" UPDATE tableemail set status=1 where status is null", connection);
> cmd2.ExecuteNonQuery();
> }
我想你可以尝试只使用cmd
来做select
和update
,然后删除if If(!reader.IsDBNull(1))
并将update
代码移到外部循环。
OleDbCommand cmd = null;
string queryString = "select email,status from tableemail";
using (OleDbConnection connection = new OleDbConnection("Provider = OraOLEDB.Oracle.1; Data Source = xe;
Password=eppspps;User ID = xpress; unicode=true"))
{
OleDbCommand command= new OleDbCommand(queryString, connection);
connection.Open();
cmd = new OleDbCommand(queryString);
cmd.Connection = connection;
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MailAddress to = new MailAddress(reader[0].ToString());
message.To.Add(to);
}
cmd.CommandText = " UPDATE tableemail set status=1 where status is null";
cmd.ExecuteNonQuery();
}
编辑
如果你想在 while 循环中使用 update
你可以尝试使用另一个 OleDbCommand
并在 if
string queryString = "select email,status from tableemail";
string updateString = "UPDATE tableemail set status=1 where email = @email";
using (OleDbConnection connection = new OleDbConnection("Provider = OraOLEDB.Oracle.1; Data Source = xe;
Password=eppspps;User ID = xpress; unicode=true"))
{
connection.Open();
OleDbCommand cmd = new OleDbCommand(queryString,Connection);
OleDbCommand cmd2 = new OleDbCommand(updateString,Connection);
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MailAddress to = new MailAddress(reader[0].ToString());
message.To.Add(to);
if(!reader.IsDBNull(1)){
cmd2.Parameters.Clear();
cmd2.Parameters.Add(new OleDbParameter("email", reader["email"]));
cmd2.ExecuteNonQuery();
}
}
}