0

私はまだ ASP.net を使い始めたばかりで、クラ​​スを呼び出す方法を学んでいます。チュートリアルを探しましたが、すべてが ASP.net 4.0 に固有のものではないため、それらを適用する必要があるかどうかわかりません。

現在、SQL データベースに接続しようとしています。私の webconfig ファイルは、接続文字列 "dbConnectionString" でセットアップされており、GridViews でテストしたところ、正しく動作しています。私が今やりたいことは、コード ビハインドからデータベースにアクセスすることです。

私はこれを達成するためのいくつかの方法を見てきましたが、私は最も効率的で復活可能な方法を望んでいます。ここにリストされている回答を採用しようとしました。背後にあるC#コードとSQ​​L接続を作成する方法、SQLサーバーにアクセスしてから条件付きリダイレクト?ただし、エラーが発生しています。

Web アプリケーションではなく、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;
        }
    }
}

ご覧のとおり、このクラスを実際に使用するためのコードはまだ書いていませんが、"using 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 サイトは 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

だから私はそれを理解したと信じています。サーバーのルートではなく、Aspx Web サイトのサブディレクトリ内に App_Code フォルダーがありました。フォルダーをルートに移動したところ、機能するようになりました。

ただし、元の投稿への編集に対する回答を聞きたいと思います。私はこれを Web アプリケーションではなく Web サイトとして行っているため、このようなクラスの使用やその他の問題に関して留意する必要がある他の問題はありますか? 私は周りを見てきましたが、多くの違いは見られませんでした。

助けてくれてありがとう!

于 2013-07-07T03:40:18.627 に答える