2016-04-28 78 views
0

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

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(); 
+0

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

回答

0

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

foreach (var line in myTextBox.Lines) 
{ 
    // Use line here. 
} 

至于插入,不要每次都创建一个新的命令对象并添加新的参数。创建一个对象,添加参数,然后每次设置它们的属性Value

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. 
} 
相关问题