【发布时间】:2020-04-12 09:45:12
【问题描述】:
第一次尝试 C#。我正在创建一个将 Excel 工作表上传到 SQL Server 数据库表中的 Web 表单。它首先上传一个选定的文件,然后按下“预览”按钮在网格视图上显示数据。从那里,然后按下“上传”按钮,将其插入到我本地 SQL 服务器上的数据库表中。
到目前为止,我无法将网格视图中的数据与表格匹配。数据将始终更改,并且永远不会是相同的行数。有什么建议?我的代码如下:
for (int i = 0; i < GridView2.Rows.Count - 1; i++)
{
SqlCommand cmd = new SqlCommand(@"USE [PD_Overview] INSERT INTO [dbo].['LABTEST$']
([EmployeeID]
,[Company]
,[Employee Name]
,[Start Time]
,[Signature In]
,[Lunch IN]
,[Lunch OUT]
,[End Time]
,[Hours]
,[Job]
,[Period]
,[Date]
,[PayID]
,[Equipment Used]
,[Injured ?]
,[Signature OUT]
,[Superintendent]
,[Processed By]
,[Date Processed]
,[On Time or Late - Proc]
,[Reported By]
,[Date Reported]
,[Hours Late-Rpt]
,[Job % Complete]
,[Variances]
,[Unique ID]
,[RT Hours WTD]
,[RT Hours Daily]
,[OT Hours Daily]
,[RT $ Daily]
,[OT $ Daily]
,[Total $ Daily]
,[PERDIEM $ Daily ]
,[HOURS(No PerDiem)]
,[ID]
,[SORT]) VALUES('" + GridView2.Rows[i].Cells[0] + "','" + GridView2.Rows[i].Cells[1] + "')"
【问题讨论】:
-
您尝试使用原始 SQL 执行此操作的方式——您只为其中两个列(EmployeeID、Company)提供数据。尝试为
VALUES()参数中剩余的每一列提供数据 -
关于 SQL 注入攻击和字符串连接的强制性警告。改用参数!看起来您的列名无效,您从哪里获得这些列名?带有符号和空格的必须用反引号括起来,但我不确定你甚至可以使用 % 和 $,或者 -...
-
谢谢@Fraze 我添加了额外的,它似乎工作。现在只是日期的转换错误。
-
@RonBeyer 参数怎么样?推荐任何材料来阅读这个?我是编码新手。名称是正在上传的 Excel 工作表的列标题。
标签: c# asp.net sql-server gridview insert