//程序内容
using   System;
using   System.Collections.Generic;
using   System.Text;
using   System.Net;
using   System.Net.Mail;
using   System.Data;
using   System.Data.SqlClient;
using   System.Data.Common;//SendMail为一个发送邮件的基类
class SendMail
{
      
 //  private string   UserId;
 //  private string   Buyer;
 //  private string   Seller;
 
 //注册后发送E-Mail
 public void RegMail(string To ,string Subject ,string Body)    
 {  string mailAddr ;
   string strConn = " ";  //连接数据库代码
  SqlConnection myConn = new SqlConnection(strConn);
  SqlCommand com = myConn.CreateCommand();
  com.CommandType = CommandType.Text;
  com.CommandText ="select mail from userinfo where userid = '"+To+"'";
  myConn.Open();
  mailAddr = com.ExecuteScalar.ToString();   //问题就在ExecuteScalar这里,我想要把查询                       //的结果赋给mailAddr
myConn.Close();
    MailMessage  message   =   new   MailMessage("[email protected]",  mailAddr , Subject, Body);
             SmtpClient   client   =   new   SmtpClient();
             client.Host   = "smtp.126.com";
             client.Port   = 25;
             client.UseDefaultCredentials   =   false;
             client.Credentials   =   new   NetworkCredential("x",   "密码");
                   
             try
             {
               client.Send(message);
               Console.WriteLine("发送完毕");
             }
             catch(Exception ex)
             {
               Console.WriteLine(ex.Message);
             }
      }
      
}class Test
{    static void Main()
{
 SendMail send = new SendMail();
 send.RegMail("12","registry","你好!");  //12为用户id
}
}
//运行结果:< error CS0119   "System.Data.Common.DbCommand.ExecuteScalar()"是一个“方法”,在给定的上下文中无效>请大家指出这个问题,关键是如何把从表中查到的数据赋给一个参数,并且把这个参数传给MailMessage()函数,到底是哪里出问题了,请各位不吝赐教...

解决方案 »

  1.   

    mailAddr = com.ExecuteScalar.ToString();   
    mailAddr是字符串,那是不是应该强制转换一下。
    mailAddr = convert(string) com.ExecuteScalar.ToString(); 具体怎么用我也忘了。你查查help。
    Good luck
      

  2.   

    你改成
    com.ExecuteScalar().ToString(); 
    就可以了你用方法的时候忘了C#中所有的方法调用后面都要加上()
      

  3.   

    那么就这样赋值给mailAddr的语句没问题吗?
      

  4.   

    谢谢,问题解决了,就是com.ExecuteScalar().ToString()中的ExecuteScalar没加括号,是我太粗心了,其他方面都没问题,刚才测试成功了.谢谢dayasky(.Neting) 指出我的低级错误