【问题标题】:C# DLL - Returning data using DataTableC# DLL - 使用 DataTable 返回数据
【发布时间】:2019-07-18 12:34:59
【问题描述】:

我正在尝试为 dll 文件创建一些代码,以返回使用 DataTable 从 SQL 数据库调用的数据。

我目前的问题是,使用下面的代码,我收到错误消息“命名空间不能直接包含字段和方法等成员。”

public DataTable getData(string cmdText)
        {
            DataTable dt = new DataTable("Test");
            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter();
            using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["LIVE"].ConnectionString))
            {
                da.SelectCommand = con.CreateCommand();
                da.SelectCommand.CommandType = CommandType.Text;
                da.SelectCommand.CommandText = cmdText;
                da.SelectCommand.Connection = con;
                try
                {
                    con.Open();
                    da.Fill(dt);
                    con.Close();
                }
                catch (Exception ec)
                {

                }
                finally
                {

                    con.Close();
                }

            }
            return dt;
        }

有人有什么建议或者可以帮忙吗?

非常感谢,

G

【问题讨论】:

  • "命名空间不能直接包含字段和方法等成员。"方法属于类型(类或结构)。根据错误消息,您的方法不包含在类型中。
  • 您能向我们展示您的完整文件吗?使用命名空间?
  • 看起来您对 C# 和 ADO.NET 还很陌生,但是:DataTable 不是在(当年)使用的好技术。如果您可以完全避免这种情况,坦率地说:我愿意。几乎任何东西都会更好!如果您想使用命令文本和连接,但不想要 DataTable,“Dapper”将是一个不错的选择
  • 您在课堂上发布的代码是?您可以发布更多该文件(整个命名空间)吗?

标签: c# dll datatable return


【解决方案1】:

你需要在你的命名空间中有一个类,例如这将修复你的错误:

namespace MyDll
{
    public static class Data
    {

        public static DataTable Get(string cmdText)
        {
            DataTable dt = new DataTable("Test");
            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter();
            using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["LIVE"].ConnectionString))
            {
                da.SelectCommand = con.CreateCommand();
                da.SelectCommand.CommandType = CommandType.Text;
                da.SelectCommand.CommandText = cmdText;
                da.SelectCommand.Connection = con;
                try
                {
                    con.Open();
                    da.Fill(dt);
                    con.Close();
                }
                catch (Exception ec)
                {

                }
                finally
                {

                    con.Close();
                }

            }
            return dt;
        }

    }


}

【讨论】:

  • 您好,感谢您的回复,但是当我尝试此操作时,我收到针对公共静态类 Get 的“无法在静态类中声明实例成员”的错误消息。
  • 对不起,我有一个错误,只需在方法中添加静态即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 2020-03-16
  • 1970-01-01
  • 2010-12-04
  • 2023-03-19
  • 1970-01-01
  • 2010-12-13
相关资源
最近更新 更多