NotImplementedException未按用户代码处理

时间:2013-04-24 17:55:39

标签: c# asp.net

我们正在使用C#和ASP.Net webforms在Visual Studio 2010中创建网站。我们不知道为什么它的破坏和出错在一个在线教程和修复其他问题后,代码有这个错误已经出现,我不知道如何解决它或我做错了如果有人能看到问题请让我知道。

using System;
using System.Collections;
using System.Configuration;
using System.Data.SqlClient;

public class ConnectionClass
{
private SqlConnection conn;
private SqlCommand command;

ConnectionClass()
{
    string connectionString = ConfigurationManager.ConnectionStrings["Connection"].ToString();
    conn = new SqlConnection(connectionString);
    command = new SqlCommand("", conn);
}

private ArrayList GetClothesByType(string ClothesType)
{
    ArrayList list = new ArrayList();
    string query = string.Format("SELECT * FROM fusey WHERE type LIKE '{0}'", ClothesType);

    try
    {
        conn.Open();
        command.CommandText = query;
        SqlDataReader reader = command.ExecuteReader();

        while (reader.Read())
        {
            int id = reader.GetInt32(0);
            string name = reader.GetString(1);
            string type = reader.GetString(2);
            double price = reader.GetDouble(3);
            string size = reader.GetString(4);
            string image = reader.GetString(5);
            string review = reader.GetString(6);

            Fusey fusey = new Fusey(id, name, type, price, size, image, review);
            list.Add(fusey);
        }
    }
    finally
    {
        conn.Close();
    }

    return list;
}



internal static ArrayList GetClothesByType(object ClothesType)
{
    throw new NotImplementedException();
}
}

2 个答案:

答案 0 :(得分:2)

您收到的是未实施的例外情况?那是因为未实施

internal static ArrayList GetClothesByType(object ClothesType)
{
    throw new NotImplementedException(); // you need to implement this method
}

我没有在你的代码中看到你称之为的任何地方,但是在某个地方,我认为当你这样做时,你会得到这个例外。

MSDN documentation on NotImplementedException如果您有兴趣

我也看到你有GetClothesByType的重载 - 你可能会混淆方法调用并传入object而不是string,导致它调用错误,未实现的方法。

您能告诉我们您拨打GetClothesByType的地方的代码吗?

答案 1 :(得分:2)

我认为你错误地调用静态方法而不是私有方法 如果您打算调用以字符串作为输入参数的方法,那么您需要将其声明为public并创建类ConnectionClass的实例

ConnectionClass cs = new ConnectionClass(....);
ArrayList clothes = cs.GetClothesByType("t-shirt");

但是,我要指出以这种方式存储连接是一种不好的做法 DbConnection是一种宝贵的资源,应该在需要时使用并立即发布。 此外,永远不要理所当然地认为用户在键盘上键入的内容并将其盲目地传递给数据库引擎 您打开Sql Injection攻击的方式,始终使用参数化查询

public ArrayList GetClothesByType(string ClothesType)
{
    ArrayList list = new ArrayList();

    string query = "SELECT * FROM fusey WHERE type LIKE @ctype";
    string connectionString = ConfigurationManager.ConnectionStrings["Connection"].ToString();
    using(SqlConnection conn = new SqlConnection(connectionString))
    using(SqlCommand command = new SqlCommand(query, conn))
    { 
       command.Parameters.AddWithValue("@ctype", ClothesType);
       conn.Open();
       SqlDataReader reader = command.ExecuteReader();
       .....
    }
}