0

我还是 ASP.net 的新手,我正在学习如何调用类。我四处寻找教程,但并非所有教程都特定于 ASP.net 4.0,所以我不确定是否应该应用它们。

现在,我正在尝试连接到我的 SQL 数据库。我的 webconfig 文件已使用连接字符串“dbConnectionString”进行设置,并且在我使用 GridViews 对其进行测试时可以正常工作。我现在想做的是从后面的代码访问数据库。

我已经看到了一些方法来实现这一点,但我想要最有效、最可重复的方法。我尝试采用此处列出的答案:如何使用后面的 c# 代码创建 sql 连接,访问 sql 服务器然后有条件地重定向?但是,我遇到了一个错误。

我将 C# 用作网站,而不是 Web 应用程序。这是我的 Login.aspx.cs 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using SqlComm; // Is this how I connect to my class from this page????


public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            //no code written yet
        }
    }

}

我的类在 App_Code 文件夹中,文件名为 SQLComm.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web;

/// <summary>
/// SQL Query class
/// </summary>
public class SqlComm
{
    // Connection string
    static string DatabaseConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["dbConnectionString"].ConnectionString;

    // Execute sql command with no value to return
    public static void SqlExecute(string sql)
    {
        using (SqlConnection conn = new SqlConnection(DatabaseConnectionString))
        {
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Connection.Open();
            cmd.ExecuteNonQuery();
        }
    }

    // Execute SQL query and return a value
    public static object SqlReturn(string sql)
    {
        using (SqlConnection conn = new SqlConnection(PjSql.dbcs()))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            object result = (object)cmd.ExecuteScalar();
            return result;
        }
    }

    // Retrieve an entire table or part of it
    public static DataTable SqlDataTable(string sql)
    {
        using (SqlConnection conn = new SqlConnection(DatabaseConnectionString))
        {
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Connection.Open();
            DataTable TempTable = new DataTable();
            TempTable.Load(cmd.ExecuteReader());
            return TempTable;
        }
    }

    // Execute a stored procedure with 1 parameter
    // Returning a value or just executing with no returns
    public static object SqlStoredProcedure1Param(string StoredProcedure, string PrmName1, object Param1)
    {
        using (SqlConnection conn = new SqlConnection(DatabaseConnectionString))
        {
            SqlCommand cmd = new SqlCommand(StoredProcedure, conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter(PrmName1, Param1.ToString()));
            cmd.Connection.Open();
            object obj = new object();
            obj = cmd.ExecuteScalar();
            return obj;
        }
    }
}

如您所见,我还没有编写任何代码来实际使用该类,而是“使用 SQLComm;”。线本身给了我这个错误:

Compiler Error Message: CS0246: The type or namespace name 'SqlComm' could not be found (are you missing a using directive or an assembly reference?)

由于我还是新手,我不确定从这里去哪里。我似乎已经在上面链接的页面上包含了答案中包含的所有内容。还有什么和我想念的?

编辑:我阅读了这篇关于类似问题的帖子:asp.NET 2.0 Web Site Can't Access Classes in App_Code 这可能是因为我正在做一个网站而不是一个 Web 应用程序,所以当我 FTP 时,App_Code 文件夹的处理方式不同文件结束了吗?

4

3 回答 3

1

using SQLComm表示您要使用不存在的命名空间。 SqlComm我认为你想要的是(在你的代码隐藏的某个地方):

DataTable dt = SqlComm.SqlDataTable(...)   // call one of the static methods.
于 2013-07-06T22:52:38.773 回答
1

您可以直接调用它。鉴于你的类只有静态方法,你会这样称呼它:

SqlComm.SqlReturn("select * from table");
于 2013-07-06T22:54:31.610 回答
0

所以我相信我想通了。我的 App_Code 文件夹位于我的 Aspx 网站的子目录中,而不是位于服务器的根目录中。我将文件夹移动到根目录,现在它可以工作了。

不过,我很想听听我对原始帖子的编辑的任何答案。由于我将其作为网站而不是 Web 应用程序来执行,因此在使用此类或其他问题时,我还需要记住其他问题吗?我环顾四周,但没有看到很多差异。

感谢大家的帮助!

于 2013-07-07T03:40:18.627 回答