将List 插入SQL Server表

我有一个实体Report其值我想插入数据库表。 必须插入以下Report属性:

 reportID - int RoleID - int Created_BY = SYSTEM(default) CURRENT_TIMESTAMP 

现在的问题是第二个属性。 我有一个包含LIST属性的报告。 ROLES是一个定义明确的实体,它有一个ID和一个NAME 。 从这个列表中,我必须提取每个角色并将每个角色的ID插入表中。

所以我的查询目前看起来如下:

 INSERT INTO REPORT_MARJORIE_ROLE(REPORT_ID, ROLE_ID, CREATED_BY, CREATED) VALUES({0}, {1}, 'SYSTEM', CURRENT_TIMESTAMP) 

我解析这些值的C#代码如下:

 try { StringBuilder _objSQL = new StringBuilder(); _objSQL.AppendFormat(Queries.Report.ReportQueries.ADD_NEW_ROLES, report.ID, "report.MarjorieRoles.Add(MarjorieRole")); _objDBWriteConnection.ExecuteQuery(_objSQL.ToString()); _objDBWriteConnection.Commit(); _IsRolesAdded = true; } 

所以请指导我如何从C#函数添加角色

我假设你说SQL (结构化查询语言),你真的是指Microsoft SQL Server (实际的数据库产品) – 对吧?

您不能将整个列表作为整体插入SQL Server – 您需要为每个条目插入一行。 这意味着,您需要多次调用INSERT语句。

像这样做:

 // define the INSERT statement using **PARAMETERS** string insertStmt = "INSERT INTO dbo.REPORT_MARJORIE_ROLE(REPORT_ID, ROLE_ID, CREATED_BY, CREATED) " + "VALUES(@ReportID, @RoleID, 'SYSTEM', CURRENT_TIMESTAMP)"; // set up connection and command objects in ADO.NET using(SqlConnection conn = new SqlConnection(-your-connection-string-here)) using(SqlCommand cmd = new SqlCommand(insertStmt, conn) { // define parameters - ReportID is the same for each execution, so set value here cmd.Parameters.Add("@ReportID", SqlDbType.Int).Value = YourReportID; cmd.Parameters.Add("@RoleID", SqlDbType.Int); conn.Open(); // iterate over all RoleID's and execute the INSERT statement for each of them foreach(int roleID in ListOfRoleIDs) { cmd.Parameters["@RoleID"].Value = roleID; cmd.ExecuteNonQuery(); } conn.Close(); } 

让我们说lstroles是你的LIST

 lstroles.ForEach(Role => { /* Your Insert Query like INSERT INTO REPORT_MARJORIE_ROLE(REPORT_ID, ROLE_ID, CREATED_BY, CREATED) VALUES(REPORT_ID, Role.ID, {0}, {1}, 'SYSTEM', CURRENT_TIMESTAMP); Commit you query*\ }); 

个人记录:谨防SQL注入。