我正在寻找一种方法来将在 foreach 循环中计算的大量变量导入我的数据库。我正在构建一个从纯文本(.txt 文件)中提取值的应用程序。在下面的示例中,我从文本字符串中过滤出一个值日期。我希望应用程序自动将循环中的每个值(计算后)插入到数据库表中的新行中。有谁知道最好的方法是什么,以及如何去做?
foreach (string resultregel in mtregel)
{
<br /><b>Rij: @regnr</b><br />
regnr = regnr + 1;
string valuedateimportA = resultregel.Remove(6);
if (valuedateimportA.StartsWith("0"))
{
var valuedateimport = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);
<i>Value Date Import = No ValueDateImport found!!</i><br />
}
else
{
DateTime valuedateimportB = DateTime.ParseExact(valuedateimportA, "yyMMdd", System.Globalization.CultureInfo.InvariantCulture);
string valuedateimport = valuedateimportB.ToString("d-M-yyyy");
<i>Value Date Import = @valuedateimport</i><br />
}
}
我尝试添加这段代码,但它不起作用:
using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionString)
{
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("INSERT INTO Import_table (valuedateimport, description, valuename) VALUES (@valuedateimport, @description, @valuename)");
cmd.CommandType = System.Data.CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@valuedateimport", txtvaluedateimport.Text);
cmd.Parameters.AddWithValue("@description", txtdescription.Text);
cmd.Parameters.AddWithValue("@valuename", txtvaluename.Text);
connection.Open();
cmd.ExecuteNonQuery();
}
最佳答案
问题解决了!
我添加了以下有效的代码:
string connectionstring = "Data Source=94.126.71.192;Initial Catalog=JasperTest;Persist Security Info=True;User ID=ID;Password=*********;MultipleActiveResultSets=True;Application Name=EntityFramework";
using (var conn = new System.Data.SqlClient.SqlConnection(connectionstring))
{
var cmd = new System.Data.SqlClient.SqlCommand("INSERT INTO Importtesttabel (valuedateimport) VALUES (@bar)", conn);
cmd.Parameters.AddWithValue("@bar", valuedateimport);
conn.Open();
cmd.ExecuteNonQuery();
}
程序现在自动将 foreach 循环中的所有变量插入到数据库中。
关于c# - 如何从 MVC 中的 View 将变量插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39098200/