我正在尝试使用Csharp语言创建Crystal Report,我在本网站上找到了如何使用C#创建A Crystal Replort的课程
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");
答案 0 :(得分:1)
我猜你得到的东西是“已经有一个与当前连接相关的开放阅读器”,是吗?如果是这样,请参阅答案的第二部分。
这是我不明白的
CustomerDS custDB = new CustomerDS(); custDB.Clear(); adap.Fill(custDB, "Customers");
第一行很简单,只需创建一个看起来像“类型化数据集”的新空实例,它与 customers 有关。这条线告诉我的主要事情是,无论出于何种原因,某人仍在使用DataSet
。怜悯他们 - 他们不知道他们做了什么。
第二行听起来像是这样;见intellisense:
通过删除所有表中的所有行来清除任何数据的System.Data.DataSet。
这一行告诉我的主要内容是,无论谁编写它都忘记了他们只创建了它,并且它还没有包含任何数据。
第三行使用数据适配器使用名为“Customers”的表中的数据填充custDB
(但是!之前的代码指示它使用非常具体的select命令,实际上看一个名为“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
声明。