不能隐式转换类型'string'& # 39; int # 39;在我的代码里
本文关键字:代码 int 我的 string 转换 类型 不能 | 更新日期: 2023-09-27 18:17:12
我试图发送电子邮件到多个电子邮件地址,这是在我的数据库。我的代码如下
private void button1_Click(object sender, EventArgs e)
{
ArrayList list_emails = new ArrayList();
int i=0,email = 0;
String condata = "data source =(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE))); user id = myuser; password = myuser";
String qry = "select emailid from emailmachin";
OracleConnection con = new OracleConnection(condata);
OracleCommand cmd = new OracleCommand(qry, con);
OracleDataReader myReader;
try
{
con.Open();
myReader = cmd.ExecuteReader();
while (myReader.Read())
{
email = myReader.GetValue(i).ToString();
list_emails.Add(email); //Add email to a arraylist
i = i + 1 - 1; //increment or ++i
//string emailIdc = myReader["emailid"].ToString();
//textBoxTo.Text = emailIdc;
myReader.Close();
con.Close();
foreach (string email_to in list_emails)
{
MailMessage mail = new MailMessage();
mail.To.Add(email_to);
mail.Subject = "Welcome to C#";
mail.From = new MailAddress(hold_Account);
mail.Body = "Test";
SmtpClient smtp = new SmtpClient("SMTP Server");
smtp.Send(mail);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
在这行代码email = myReader.GetValue(i).ToString();
中显示了错误:
不能隐式地将'string'类型转换为'int'类型
myReader.GetValue(i).ToString()
不返回整数,它返回字符串,因此,您需要将email
定义为string
。
int i = 0;
string email = string.Empty;
这可能是一个错误,因为所有不同的邮件变量,尝试使用更好的变量名。
同样,您的代码没有正确地增加i
,它保持不变。试着用i++;
代替i = i + 1 - 1;
-
当你不知道用string, int, char等类型声明变量时,不要担心,只需键入"var"并允许c#选择它的类型,我的朋友:)
c#中的 字符串不能隐式地转换为整型,你应该显式地使用这个函数:
Convert.ToInt32(your string variable or your string with quotation mark);
当你想向多个收件人发送电子邮件时,我认为你最好使用"密件抄送"(盲抄送)而不是"to",因为
smtp.Send(mail);
只运行一次 如何使用c#发送邮件