.net中的Web服务

时间:2014-08-26 18:30:39

标签: c# web-services asmx

我第一次尝试在.net。

中使用 webservice

我的代码c#如下,但我不明白,因为字符串结果未分配。

如果尝试删除行 if(reader.HasRows)中的控件,则会分配字符串结果

如何检查用户表中是否存在字符串电子邮件?

我的代码背后的错误在哪里?

using System;
using System.Configuration;
using System.Data;
using System.Data.Odbc;
using System.Web.Services;

[WebService(Namespace = "http:/.../ws")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class ws : System.Web.Services.WebService
{

    [WebMethod]
    public string es(string email)
    {
        string result;

        using (OdbcConnection conn =
            new OdbcConnection(ConfigurationManager.ConnectionStrings["cs"].ConnectionString))
        {
            using (OdbcCommand command = new OdbcCommand())
            {
                command.Parameters.Clear();
                command.CommandText = "Select Email From tblUsers where email = ?;";
                command.Parameters.AddWithValue("param1", email.ToString());
                command.Connection = conn;
                conn.Open();

                command.CommandType = CommandType.Text;
                OdbcDataReader reader = command.ExecuteReader();

                try
                {
                    if (reader.HasRows)
                    {
                        result = "1";
                    }
                }
                catch (Exception ex)
                {
                    return ex.ToString();
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }
            }
            return result;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

首先关闭email已经是一个字符串,所以你不需要 .ToString()它。

其次,(除非你在使用.NET 3.0之前)不要打扰经典的ASMX Web服务并使用WCF。关于IIS上托管的WCF Web服务,Web上有大量资源

第三,您应该在运行任何email != null之前对您的电子邮件参数执行空检查,或者更好的是,如果使用.NET 3.5或更早版本,还要检查空字符串string.IsNullOrWhiteSpace(email) ,使用 IsNullOrEmpty

最后,要回答您的问题,要检查您的第一列(第0列),电子邮件是否为空,您可以执行reader.IsDBNull(0),但要测试它是否为空字符串,你需要读取值(假设它不为空)然后检查,除非你通过SQL(google it)这样做

此外,使用SqlCommand,SqlDataReader和SqlConnection。除非您与其他数据库系统(SQL Server除外)连接,并且绝对必须使用ODBC。