C# 如果他们想收到电子邮件,请从db中选择这些电子邮件
我正在开发一个严重依赖电子邮件的系统,我试图确定用户是否希望得到通知 用户详细信息存储在SQL Server Express中。我想检查哪些注册用户希望从数据库接收电子邮件。这可能吗 到目前为止,我已经做到了:C# 如果他们想收到电子邮件,请从db中选择这些电子邮件,c#,sql,winforms,sql-server-2014-express,C#,Sql,Winforms,Sql Server 2014 Express,我正在开发一个严重依赖电子邮件的系统,我试图确定用户是否希望得到通知 用户详细信息存储在SQL Server Express中。我想检查哪些注册用户希望从数据库接收电子邮件。这可能吗 到目前为止,我已经做到了: using (SqlCommand command = new SqlCommand()) { command.Connection = connection; command.CommandType = CommandType.Text; command.Com
using (SqlCommand command = new SqlCommand())
{
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = "SELECT COUNT(*) FROM [UserTable] WHERE ([price] = @price)";
command.Parameters.AddWithValue("@price", "10.000");
try
{
connection.Open();
int recordsAffected = command.ExecuteNonQuery();
}
catch (SqlException ex)
{
MessageBox.Show("Error is SQL DB: " + ex);
}
finally
{
connection.Close();
}
}
它返回-1,但我有一行10.000。在这里,我想保存那些在db中有10.000个首选项的人的电子邮件地址,以便我可以将其添加到电子邮件列表中
总结一下:检查所有行中是否有“是”,并从同一行保存他们的“电子邮件”
有人能给我指一下正确的方向吗?多谢各位
更新了@SeM
ExecuteNonQuery
返回仅影响Update
、Insert
和Delete
语句的行数。在您的情况下,您将始终获得get-1
,因为在Select语句上ExecuteNonQuery
返回-1
所以试试这个:
using(SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
using(SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = "SELECT COUNT(*) FROM UserTable WHERE price = @price";
cmd.Parameters.Add(new SqlParameter("@price", 10000));
int count = int.Parse(cmd.ExecuteScalar());
}
}
catch (Exception ex)
{
//Handle your exception;
}
}
如上所述,ExecuteOnQuery只执行此操作-没有查询结果 相反:
int recordsAffected = (int)command.ExecuteScalar();
ExecuteNonQuery
不是这里要调用的编写工具。ExecuteNonQuery
返回受影响的行数。为了好奇,不要编写try{}catch{}最后{}
(在您的例子中),只需使用using(SqlConnection connection=new SqlConnection(yourConnectionString)){}
,很抱歉,如果这超出了范围,为什么要使用价格栏来确定某人是否希望接收电子邮件?这不是布尔字段的工作吗?不,这只是一个例子,这些字段不是英文的,所以我把它们改为price,但是如果你问的是这个,它们是数值@此外,您还应该使用(…){…}块将SqlCommand
放入中,实际上,…'command.ExecuteScalar'出现错误:无法从'System.Data.SqlClient.SqlConnection'转换为'string'。我做错什么了吗?@C.S.我已经为@SeM更新了你的更新了它,请检查一下。
int recordsAffected = (int)command.ExecuteScalar();