2012-12-31 39 views
-8

我尝试使用CSharp语言创建水晶报表的代码,我发现一个教训,如何创建一个水晶Replort使用C#在这个网站是什么意思在C尖锐的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; 
} 

可以请你expline我什么剂量的意思,我怎样可以把它改成我的情况下,由于

这是我不明白

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

给出的错误是什么? – Prescott

+4

那么它获取一些数据并将其作为'DataSource'分配给你的报告,你能详细说明你不明白的东西吗? – V4Vendetta

+0

你写过上面的代码吗?如果是的话,你怎么能写一些你不明白的东西??还是你复制粘贴一些例子,直到你得到它的工作..? – MethodMan

回答

1

我猜你沿着“已经存在的线得到的东西一个与当前连接相关的开放阅读器“,是吗?如果是这样,请参阅答案的第二部分。


这是我不明白

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

第一行是微不足道的,而单纯建立什么看起来是一个“类型数据集”一个新的空实例,有什么与客户联系。这条线告诉我的主要事情是,有人仍然,无论出于何种原因,使用DataSet。怜悯他们 - 他们不知道他们做什么。

第二行做它听起来像;请参阅intellisense:

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

此行告诉我,最主要的是,不管是谁写的已经忘记,他们才刚刚创造了它,并且它不包含任何数据。

第三行使用数据适配器填充custDB来自一个名为“客户”(但是!代码早些时候指示它使用一个非常具体的选择命令,它实际上看起来在一个名为“table表中的数据管理员“)。


如果我们不是看标记// 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查询来获取来自一个名为“admin”的表中的所有值,通过读者 API(一个只有前行的行数据流),但是完全忽略了那个读者。它不会在任何地方使用它。最值得注意的是,它也没有消耗的数据,也没有配置读写器。这告诉我的主要原因是作者已经失去了他们正在做的事情的踪迹。这个开放的读者会导致问题。删除该行:

MySqlDataReader dataReader = cmd.ExecuteReader(); 

另请参阅:查看using声明。

+1

感谢您的回复,但是什么剂量意味着 CustomerDS custDB = new CustomerDS(); 什么是CustomerDS? –

+0

@ user1927867这是一个在您的项目中定义的类型。将光标移入其中并按F12。很可能,这是从'DataSet'项目类型(它将具有'.xsd'文件扩展名)生成的。它根据DataTable/DataSet API对许多数据库表进行建模。 –

+0

user1927867如果你不明白如何通过关键字new来实例化一个“NEW”对象和或Class的实例,这是你最不顾虑的问题,我建议阅读这个链接上的信息http:///msdn.microsoft.com/en-us/library/51y09td4%28v=vs.71%29.aspx – MethodMan