这段代码在c#中是什么意思?

本文关键字:是什么 意思 段代码 代码 | 更新日期: 2023-09-27 17:50:17

我试图使用Csharp语言创建水晶报告,我在这个网站上找到了如何使用c#创建水晶报告的课程

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"); 

这段代码在c#中是什么意思?

我猜你得到的是"已经有一个与当前连接相关的打开的阅读器"之类的东西,对吗?如果是,请看答案的第二部分。


这是我不明白的

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

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

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

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

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

第三行使用数据适配器用来自名为"客户"的表的数据填充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&;"的表中获取所有值,但随后完全忽略该reader。它不会在任何地方使用它。最值得注意的是,它也不使用数据,也不释放读取器。这告诉我的主要事情是,作者已经忘记了他们在做什么。打开阅读器会引起问题。删除行:

MySqlDataReader dataReader = cmd.ExecuteReader();

还有:查看using语句