使用 和 ODBC/MySQL 时出现问题
本文关键字:问题 MySQL ODBC 使用 | 更新日期: 2023-09-27 18:33:17
因此,这是我尝试在 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
我试图保持我的代码简约,易于编辑等,因此我想避免仅仅为了拥有它们而使用不必要的类,方法等。
您有几个问题;第一个问题是您没有在方法中定义代码。为此,您需要将其放入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 的第二个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();
}
}
最后,您应该使用 gridview 或类似的东西来绑定此数据,而不是以您正在执行的方式写入Response Stream
。假设您的页面中有一个网格视图;你可以完美地做到这一点:
gridView.DataSource=com.ExecuteReader();
gridView.DataBind();