-3

我们正在使用 C# 和 ASP.Net 网络表单在 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();
}
}
4

2 回答 2

2

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

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

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

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();
       .....
    }
}
于 2013-04-24T18:04:20.840 回答
2

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

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

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

如果您有兴趣,请参阅有关 NotImplementedException 的 MSDN 文档

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

你能告诉我们你打电话的地方GetClothesByType吗?

于 2013-04-24T17:57:45.240 回答