C# 如何使用foreach循环将文本框的每一行插入数据库(逐行)?

C# 如何使用foreach循环将文本框的每一行插入数据库(逐行)?,c#,sql-server,foreach,C#,Sql Server,Foreach,当TextMode属性为Multiline时,我想使用foreach循环将Textbox行的每一行插入一行数据库(逐行)?我使用了这段代码,但它将所有行插入我的“ChTB”表的一行中。怎么了 string ID = null; DateTime RegDtTime = DateTime.UtcNow; SqlConnection con1 = new SqlConnection(connectionString); string sql1 = "SELECT * FROM ChTB"; SqlC

TextMode
属性为
Multiline
时,我想使用
foreach
循环将
Textbox
行的每一行插入一行数据库(逐行)?我使用了这段代码,但它将所有行插入我的“ChTB”表的一行中。怎么了

string ID = null;
DateTime RegDtTime = DateTime.UtcNow;
SqlConnection con1 = new SqlConnection(connectionString);
string sql1 = "SELECT * FROM ChTB";
SqlCommand command1 = new SqlCommand(sql1, con1);
con1.Open();
foreach (object line_loopVariable in this.Textbox1.Text.Split({ Environment.NewLine }, StringSplitOptions.None)) {
    line = line_loopVariable;
    ID = line;
    string commandText = "insert into ChTB(ID,Visible,RegDtTime,LastDateTime) values(@ID,@Visible,@RegDtTime,@LastDateTime)";
    SqlCommand cmdObj = new SqlCommand(commandText, con1);
    cmdObj.Parameters.AddWithValue("@ID", ID);
    cmdObj.Parameters.AddWithValue("@Visible", "NO");
    cmdObj.Parameters.AddWithValue("@RegDtTime", RegDtTime);
    cmdObj.Parameters.AddWithValue("@LastDateTime", RegDtTime);
    cmdObj.ExecuteNonQuery();
}
con1.Close();

为什么对同一个值使用三个不同的变量?只要这样做:

foreach (var line in myTextBox.Lines)
{
    // Use line here.
}
对于插入,不要每次都创建新的命令对象并添加新参数。创建一个对象,添加参数,然后每次设置其
属性,例如

var command = new SqlCommand("INSERT INTO MyTable (SomeColumn) VALUES (@SomeColumn)", connection)
var parameter = command.Parameters.Add("@SomeColumn", SqlDbType.VarChar, 50)

foreach (var line in myTextBox.Lines)
{
    parameter.Value = line

    // Execute command here.
}

为什么对同一个值使用三个不同的变量?只要这样做:

foreach (var line in myTextBox.Lines)
{
    // Use line here.
}
对于插入,不要每次都创建新的命令对象并添加新参数。创建一个对象,添加参数,然后每次设置其
属性,例如

var command = new SqlCommand("INSERT INTO MyTable (SomeColumn) VALUES (@SomeColumn)", connection)
var parameter = command.Parameters.Add("@SomeColumn", SqlDbType.VarChar, 50)

foreach (var line in myTextBox.Lines)
{
    parameter.Value = line

    // Execute command here.
}

通过MsgBox(Me.Textbox1.text.Split({Environment.NewLine},StringSplitOptions.None).length)测试文本的长度。如果返回1,那么您的文本可能不包含当前设置的Environment.NewLine.Test(Me.Textbox1.text.Split({Environment.NewLine},StringSplitOptions.None).length)文本长度。如果它返回1,那么您的文本可能不包含Environment.NewLine的当前设置。