0

これは、C#で(接続プール用に)を使用して使用するためのサンプルコードです。今のところ、メソッドに含まれていないためにエラーが発生していると思います。しかし、これを回避する方法はありますか?

<% @Page Language="C#" %>
<% @Import Namespace="System.Data.Odbc" %>
<% @Import Namespace="System.Web.Configuration" %>

<script language="C#" runat="server">
string conString = WebConfigurationManager.ConnectionStrings["cheese"].ConnectionString;
using (OdbcConnection con = new OdbcConnection(conString)) {
    con.Open();
    using (OdbcCommand com = new OdbcCommand("SELECT pies FROM ducks WHERE isapie = nope", con)) {
        com.Parameters.AddWithValue("@var", paramWord);
        using (OdbcDataReader reader = com.ExecuteReader()) {
            while (reader.Read()) {
                Response.Write(reader.GetString(0));
            }
        }
    }
    con.Close();
}
</script>

現在、エラーが発生している行は次のとおりです。

Line 8:     using (OdbcConnection con = new OdbcConnection(conString)) {

そして、問題のエラーは次のとおりです。

Compiler Error Message: CS1519: Invalid token 'using' in class, struct, or interface member declaration

コードを最小限に抑え、編集しやすいようにしているので、不要なクラスやメソッドなどは、単にそれらを使用するためだけに使用しないようにしたいと思います。

4

1 に答える 1

0

いくつかの問題があります。1つ目は、メソッド内にコードが定義されていないことです。これを機能させるには、たとえば次のようにPage_Load内に配置する必要があります。

<script language="C#" runat="server">

void Page_Load(object sender,EventArgs e)
{
    string conString = WebConfigurationManager.ConnectionStrings["cheese"].ConnectionString;
    using (OdbcConnection con = new OdbcConnection(conString)) {
    con.Open();

    using (OdbcCommand com = new OdbcCommand("SELECT pies FROM ducks WHERE isapie = nope", con)) {
         com.Parameters.AddWithValue("@var", paramWord);
         using (OdbcDataReader reader = com.ExecuteReader()) {
          while (reader.Read()) 
             Response.Write(reader.GetString(0));
         }//end using reader
     }//end using ODBCCommand
  }//end using ODBCConnection
}//page_load
</script>

2番目の問題は、を使用usingして接続を開き、閉じているオブジェクトの下にある接続オブジェクトを使用しようとすることです}usingOdbcCommandをインスタンス化する秒に到達するまでに、接続はすでに破棄されています。代わりに、次のようなことを行う必要があります。

void Page_Load(object sender,EventArgs e)
{
string conString = WebConfigurationManager.ConnectionStrings["cheese"].ConnectionString;
using (OdbcConnection con = new OdbcConnection(conString)) {
    con.Open();

using (OdbcCommand com = new OdbcCommand("SELECT pies FROM ducks WHERE isapie = nope", con)) {
    com.Parameters.AddWithValue("@var", paramWord);
    using (OdbcDataReader reader = com.ExecuteReader()) {
        while (reader.Read()) {
            Response.Write(reader.GetString(0));
        }
    }
 }
 con.Close();
 }
}

最後に、グリッドビューなどを使用して、現在の方法で書き込むのではなく、このデータをバインドするResponse Stream必要があります。ページにGridviewがあると仮定します。あなたは完全にこれを行うことができます:

gridView.DataSource=com.ExecuteReader();
gridView.DataBind();
于 2012-05-04T19:18:58.760 に答える