私はこれに完全に困惑しており、私はC#にまったく慣れていないので、あなたの素晴らしい人々の1人が私を助けてくれるかもしれません. ADO.NET を使用してフォーム フィールドからデータベースを更新しようとしています。
基本的に、私が得ているエラーは、データベースに null 値を挿入しようとしているということです。エラーの正確なテキストは次のとおりです。
System.ArgumentNullException: The SqlParameterCollection only accepts non-null SqlParameter type objects.
使用しようとしているページのコードビハインドは次のとおりです。
private void ExecuteInsert(string firstName, string lastName, string emailAddress, string city, string phone)
{
SqlConnection conn = new SqlConnection(GetConnectionString());
string sql = "INSERT INTO contactInfo (firstName, lastName, emailAddress, city, phone) VALUES "
+ " (@firstName, @lastName, @emailAddress, @city, @phone)";
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter[] param = new SqlParameter[6];
param[0] = new SqlParameter("@firstName", SqlDbType.NVarChar, 25);
param[1] = new SqlParameter("@lastName", SqlDbType.NVarChar, 25);
param[2] = new SqlParameter("@emailAddress", SqlDbType.NVarChar, 30);
param[3] = new SqlParameter("@city", SqlDbType.NVarChar, 50);
param[4] = new SqlParameter("@phone", SqlDbType.Int, 10);
param[0].Value = firstName;
param[1].Value = lastName;
param[2].Value = emailAddress;
param[3].Value = city;
param[4].Value = phone;
for (int i = 0; i < param.Length; i++)
{
cmd.Parameters.Add(param[i]);
}
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Insert Error:";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (firstName.Text != null)
{
//call the method to execute insert to the database
ExecuteInsert(firstName.Text,
lastName.Text,
emailAddress.Text,
city.Text,
phone.Text);
Response.Write("Record was successfully added!");
ClearControls(Page);
}
else
{
Response.Write("Please enter your name");
}
}
public static void ClearControls(Control Parent)
{
if (Parent is TextBox)
{ (Parent as TextBox).Text = string.Empty; }
else
{
foreach (Control c in Parent.Controls)
ClearControls(c);
}
}
これを行うべき別の方法がある場合は、ぜひ聞きたいです。オンラインで良い情報を見つけることができないようです。