NotImplementedException未被用户代码处理

本文关键字:代码 处理 用户 NotImplementedException | 更新日期: 2023-09-27 18:10:56

我们正在Visual Studio 2010中使用c#和ASP创建站点。净webforms。我们不知道为什么它坏了,走错了一个在线教程,修复其他问题后,代码有这个错误已经上来了,我不知道如何修复它或我做错了什么,如果有人能看到一个问题,请让我知道。

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();
}
}

NotImplementedException未被用户代码处理

你得到一个未实现的异常?这是因为没有实现

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

我在你的代码中没有看到你调用这个,但是你在某个地方,我想当你这样做的时候,你会得到这个异常。

MSDN文档NotImplementedException如果你感兴趣

我还看到你对GetClothesByType有一个过载——你可能混淆了方法调用和传递object而不是string,导致它调用了错误的,未实现的方法。

您能告诉我们您的代码在哪里调用GetClothesByType吗?

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

类的实例
ConnectionClass cs = new ConnectionClass(....);
ArrayList clothes = cs.GetClothesByType("t-shirt");

然而,让我指出,以这种方式存储连接是一种不好的做法。
DbConnection是一种宝贵的资源,应该在需要时使用并立即释放。此外,永远不要想当然地把用户在键盘上键入的内容盲目地传递给数据库引擎。
你打开了Sql注入攻击的道路,总是使用参数化查询

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();
       .....
    }
}