【发布时间】:2018-08-30 07:18:21
【问题描述】:
我有一个文本框,其中包含用逗号分隔的数据查看图片:
还有一个添加数据的按钮。
数据以逗号分隔:E013-007,E013-021,E013-022,E013-048,E013-049,V039-034
我需要帮助才能使用 C# 将该文本框中的数据插入 SQL。
Sql中的数据按行:
E013-007
E013-021
E013-022
...
我有代码,但它不起作用:
SqlConnection con = new SqlConnection(DbConnect.ConnectStr);
SqlCommand cmd = new SqlCommand("multiple", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
con.Open();
if (txtKMH.Text.Contains(","))//checking for you are entered single value or multiple values
{
string[] arryval = txtKMH.Text.Split(',');//split values with ‘,’
int j = arryval.Length;
int i = 0;
for (i = 0; i < j; i++)
{
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@Main_KMH", arryval[j]);
cmd.Parameters.AddWithValue("@Main_Date", txtNgay.Text);
cmd.ExecuteNonQuery();
}
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Thành công!')</script>");
}
con.Close();
Sql:
USE [Database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[multiple] @Main_KMH nvarchar(50),@Main_Date DateTime
AS
Begin
insert into MainVotes(Main_KMH,Main_Date) values(@Main_KMH,@Main_Date);
End
【问题讨论】:
-
您的代码目前出了什么问题?
-
数据未添加?
-
您正在运行一个存储过程,但我们看不到该过程。也许问题就在那里?还有
txtNgay.Text的内容是什么——你没提到。 -
在任何情况下,如果要将数据插入表中,可以使用 SqlBulkCopy 或表值参数,而不是执行单独的插入。实体框架之类的 ORM 和 dapper 之类的微 ORM 可以将单个查询一起批处理并避免多次执行的成本
-
cmd.Parameters.AddWithValue("@Main_KMH", arryval[j]);[j]应该是[i]- 您在每次迭代中插入最后一个值
标签: c# sql-server ado.net