点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)由于它是Adaptive Ser...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)由于它是Adaptive Ser...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
由于它是Adaptive Server Enterprise,因此 SqlConnection
不起作用,因此我必须使用其他内容,例如 OdbcConnection
,否则(如果有一些建议, )。
sybase数据库表(让我们说表 Customer
)具有数百万条记录,并且每次运行该程序时,我都打算推送另一个 从excel到Sybase表 Customer
的数千条记录。 由于数量原因,我必须使用批量复制代码。 假设数据库表中已经有数百万条记录,并且excel文件中还有10,000条记录,那么我不能一一遍历excel记录,所以请批量复制代码。
我需要考虑的另一件事是:Sybase表可能已经在excel文件中包含一些记录,因此我不能真正只对记录使用SQL Insert Into
语句 在Sybase表 Customer
中已经存在,我可能需要使用SQL Update
语句。 excel文件中有一些可能的错误记录(Sybase表不会接受),我还需要使用 Try Catch
语句来捕获这些异常。 >
如何尝试将代码从Excel(xlsx)批量复制到Sybase Adaptive Server Enterprise的代码?
谢谢。
private void importExcelStripMenuItem_Click(对象发送者,EventArgs e) { var filePath = string.Empty; OpenFileDialog OpenFile = new OpenFileDialog(); OpenFile.Filter =" Excel文件| * .xl *"; //过滤excel文件 OpenFile.Title ="选择您的文件"; OpenFile.FilterIndex = 2; OpenFile.RestoreDirectory = true; 如果(OpenFile.ShowDialog()== DialogResult.OK) { //获取指定文件的路径 filePath = OpenFile.FileName; } Excel.Application xlApp =新的Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(filePath); Excel._Worksheet xlWorksheet = xlWorkbook.Sheets [1]; //工作簿中只有一张纸 //设置与EXCEL文件的连接。 OdbcConnection myExcelConn =新的OdbcConnection(" Driver = {Microsoft Excel驱动程序(* .xls)}; DBQ =" + filePath +"; DriverID = 790"); 尝试 { myExcelConn.Open(); //从EXCEL表格获取数据。 //从excel文件中选择所有字段,但最好不要使用SELECT * FROM ....,因为其他列中可能存在不等价的数据,所以我只复制了前6列,Sybase表Customer也只有这6个字段 。 OdbcCommand ObjCmd = new OdbcCommand(" SELECT SocialSecurityNumber,FirstName,LastName,Gender,DOB,PhoneNumber FROM [" + xlWorksheet.Name +" $]",myExcelConn); //读取从EXCEL文件中提取的数据。 OdbcDataReader objBulkReader = null; objBulkReader = ObjCmd.ExecuteReader(); //关闭Excel文件 xlWorkbook.Close(false); xlApp.Quit(); //设置连接字符串。 使用(OdbcConnection con = new OdbcConnection(" Sybase ASE Connection String")) { con.Open(); //最后,将数据加载到数据库表中。 //我不知道如何编写这部分代码。 } MessageBox.Show("成功加载。"); } 抓住(前例外) { MessageBox.Show(ex.Message); } 最后 { //清除。 //清除批量复制期间发生的其他对象 myExcelConn.Close(); myExcelConn = null; } }
您将需要一些努力。
我不是C#专家。 因此,我无法为您编写代码,但请您提供一些指示,您可以在其中尝试一些操作。
如果您已在PC/台式机上安装了SDK,则有使用ADO net连接到的好示例 SAP/Sybase服务器。
C#示例示例在以下文件夹中,假定您已在C:\
C:\ \ DataAccess \ ADONET \ Samples中安装了SDK \ CSharp \ Simple \(32位)
C:\ \ DataAccess64 \ ADONET \ Samples \ CSharp \ Simple \(64位)
这些都是很好的起点。
如果要使用ODBC路由,请手动为SAP/Sybase服务器创建DSN,然后在C#程序中提供ODBC连接字符串。 您可以在Internet上搜索SAP/Sybase的ODBC连接字符串。
HTH
Avinash
一周热门 更多>