2016-04-28 81 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. 
} 
相關問題