テーブルのデフォルトの制約として SQL Server に格納されている値を優先して、一部の値を無視する必要があるように、SQL Serverに値INSERT
を格納するにはどうすればよいですか? string[]
これらのデフォルトを使用するには、何を渡す必要がありますか (NULL など)。
現在、コードにすべてのデフォルトを追加していますが、かさばります。
以下は私のコードです:
if (value == "") value = "0";
string insert = "INSERT INTO " + table + " (" + columns + ") VALUES (" + atColumns + ")";
using (SqlConnection connect = new SqlConnection(connection))
{
using (SqlCommand command = new SqlCommand(insert, connect))
{
//adds values to corresponding parameters
for (int i = 0; i < table_cols.Length; i++)
{
command.Parameters.AddWithValue("@" + table_cols[i], table_vals[i]);
}
foreach (SqlParameter Parameter in command.Parameters)
{
if (Convert.ToString(Parameter.Value) == "")
{
Parameter.Value = DBNull.Value;
}
}
connect.Open();
command.ExecuteNonQuery();
response = "Success";
return response;
特定Parameter.Value
が null ではなく、SQL Server によって既定値が設定されている場合、このコードは null では機能しません。
SQL Server では、insert ステートメントで値を省略することでこれを処理します (この省略により、テーブルの既定値が挿入されますが、null を指定するとエラーが発生します)。