【问题标题】:what does mean this code in c sharp c# [closed]c sharp c#中的这段代码是什么意思[关闭]
【发布时间】:2012-12-15 09:38:35
【问题描述】:

我正在尝试使用 Csharp 语言创建 Crystal Report,我在本网站上找到了如何使用 C# 创建 Crystal Replrt 的课程

http://www.codeproject.com/Articles/14029/How-to-Create-a-Crystal-Report-using-C-and-MySQL

但是当我尝试理解代码时,我不理解某些行以及如何将其更新到我的情况

完整的按钮代码

private void button2_Click(object sender, EventArgs e)
{
    Mydb mysqlclass = new Mydb();
    mysqlclass.conncting();

    // here is error under fahad.conncting.createcommand();
    MySqlCommand cmd = mysqlclass.connection.CreateCommand();
    cmd.CommandText = "SELECT * FROM admin ";
    mysqlclass.connection.Open();
    MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
    MySqlDataReader dataReader = cmd.ExecuteReader();

    // Create a Dataset and using DataAdapter to fill it 
    adap = new MySqlDataAdapter(); 
    adap.SelectCommand = cmd;
    CustomerDS custDB = new CustomerDS();
    custDB.Clear();
    adap.Fill(custDB, "Customers"); 

    // Create a CrystalReport1 object 
    CrystalReport1 myReport = new CrystalReport1();
    // Set the DataSource of the report 
    myReport.SetDataSource(custDB);
    // Set the Report Source to ReportView 
    crystalReportViewer1.ReportSource = myReport; 
}

你能解释一下这意味着什么剂量以及我如何改变它以适应我的情况,谢谢

这是我不明白的

CustomerDS custDB = new CustomerDS();
custDB.Clear();
adap.Fill(custDB, "Customers"); 

【问题讨论】:

  • 给出的错误是什么?
  • 它获取一些数据并将其分配为DataSource 用于您的报告,您能详细说明您不了解的地方吗?
  • 上面的代码是你写的吗?如果是这样,你怎么能写一些你不明白的东西..?还是你复制粘贴了一些例子直到你让它工作..?

标签: c# mysql crystal-reports


【解决方案1】:

我猜你的意思是“已经有一个打开的阅读器与当前连接相关联”,是吗?如果是这样,请参阅答案的第二部分。


这是我不明白的

CustomerDS custDB = new CustomerDS();
custDB.Clear();
adap.Fill(custDB, "Customers"); 

第一行很简单,只是创建了一个看起来像“类型化数据集”的新空实例,它与客户有关。这条线告诉我的主要事情是,无论出于何种原因,有人仍在使用DataSet。怜悯他们——他们不知道自己在做什么。

第二行就像它听起来的那样;见智能感知:

通过删除所有表中的所有行来清除任何数据的 System.Data.DataSet。

这行告诉我的主要事情是,写它的人忘记了他们只是创建了它,而且它还没有包含任何数据。

第三行使用 数据适配器 使用名为“Customers”的表中的数据填充 custDB(但是!前面的代码指示它使用非常具体的选择命令,实际上查看名为“admin”的表)。


如果我们改为查看标记为// here is error的代码...

MySqlCommand cmd = mysqlclass.connection.CreateCommand();
cmd.CommandText = "SELECT * FROM admin ";
mysqlclass.connection.Open();
MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
MySqlDataReader dataReader = cmd.ExecuteReader();

这将执行一个 SQL 查询,通过 reader API(仅用于前向的行数据流)从名为“admin”的表中获取所有值,但随后完全忽略了该读取器。它不会在任何地方使用它。最值得注意的是,它也不消耗数据,也不处置阅读器。这告诉我的主要事情是作者已经忘记了他们在做什么。那个开放的阅读器会引起问题。删除该行:

MySqlDataReader dataReader = cmd.ExecuteReader();

另外:查看using 声明。

【讨论】:

  • 感谢您的回复,但这是什么意思 CustomerDS custDB = new CustomerDS(); CustomerDS 是什么?
  • @user1927867 是在项目中某处定义的类型。将插入符号移入其中并按 F12。很可能,它是从 DataSet 项目项类型(将具有 .xsd 文件扩展名)生成的。它根据DataTable / DataSet API 对许多数据库表进行建模。
  • user1927867 如果您不了解如何通过关键字 new 实例化“新”对象和或 Class 的实例,这是您最不必担心的问题,我建议您阅读信息位于此链接msdn.microsoft.com/en-us/library/51y09td4%28v=vs.71%29.aspx
  • 谢谢大家,我会详细了解它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多