2012-05-04 23 views
0

これはC#で(Connection Pooling用)を使用するためのサンプルコードです。今、私はそれが方法にないために私にエラーを与えていると思います。しかし、これを回避する方法はありますか?今のエラーを与える行であるODBC/MySqlを使用した場合の問題

<% @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> 

:私が編集しやすく、最小限の私のコードを維持しようとしています

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

、:

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

、問題のエラーです私はそれらを持つために単に不必要なクラス、メソッドなどを避けたいと思っています。

+0

最初に、 'con.Open();'の後ろにある '閉じる'中かっこを 'con.Close();'の後ろに移動する必要があります。あなたはそれを終える前に接続を破棄しています。 –

+0

完了して編集しました。同じ行に同じエラーがあります。 –

答えて

0

いくつかの問題があります。最初の方法は、メソッド内でコードを定義していないということです。これが機能するためには、例えば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> 

第二の問題は、あなたが接続を開くためにusingを使用し、終値}の下に接続オブジェクトを使用しようとするということです。 OdbcCommandをインスタンス化する2番目のusingに到達するまでに、接続はすでに破棄されています。

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があると仮定します。

+0

ああ、.Netが私のコードを生成するのは大したことではありません...私はそれが何をしているのかほとんど分かっていませんし、XHTML準拠について多くのことを心配しています。私の専門知識の領域)。ありがとう、あなたの説明は非常に有用であり、あなたはそれについてかなり丁寧でした!私は何年もC#をやっていないし、質問をすると非常に失礼な人もいる。 –

+0

@ user798080問題ありません。 – Icarus

関連する問題