我有下面的代碼插入一些數據到Access表中。它開始於一個逗號分隔的線,我分成一個字符串數組,然後添加數組元素作爲參數:INSERT查詢 - 空與空字符串..它有關係嗎?
string line = "one\ttwo\t\tfour";
string[] values = line.Split('\t');
using (OleDbCommand com = new OleDbCommand("INSERT INTO [MyTable] (" +
"[Field1], [Field2], [Field3], [Field4] "
") VALUES (" +
"?, ?, ?, ?" +
")", con))
{
com.Parameters.Add("@p0", OleDbType.Char, 255).Value = (object)values[0] ?? DBNull.Value;
com.Parameters.Add("@p1", OleDbType.Char, 255).Value = (object)values[1] ?? DBNull.Value;
com.Parameters.Add("@p2", OleDbType.Char, 255).Value = (object)values[2] ?? DBNull.Value;
com.Parameters.Add("@p3", OleDbType.Char, 255).Value = (object)values[3] ?? DBNull.Value;
com.ExecuteNonQuery();
}
在上述例子中,@p2
不會有一個值。它被作爲空值插入到Access表中,而不是空值。至少我認爲我正確地解釋了這一點。如果我查詢了Field3 is Null
,我沒有收到任何結果。如果我查詢Field3 = ""
,我確實得到了結果。它是空白還是空白?是否有'首選'選項?
謝謝!
精確的術語是**零長度字符串**或**空字符串**,不是空白。另外,你爲什麼使用字符串連接來寫SQL而不是多行字符串? –
感謝您的澄清。關於連接與多行,我真的沒有一個好的答案。但是,在剛剛閱讀了關於多行字符串的更多內容之後,我將開始使用這些字符串! –