我正在用 ASP/C# 编写一个页面,我必须在其中获取我创建的表单并将其插入到 MS Access 数据库中。MS Access 数据库设置有以下字段:
ID、用户名、密码、名字、姓氏、地址、地址 2、城市、州、邮政编码、电子邮件、性别、年龄、衬衫尺寸、裤子尺寸、电子邮件订阅。
我收到以下错误:
异常详细信息:System.Data.OleDb.OleDbException:没有为一个或多个必需参数提供值。
我无法弄清楚哪个参数缺少值。这是堆栈跟踪:
[ OleDbException (0x80040e10): No value given for one or more required parameters.]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) +992156
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +255
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +188
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +58
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +161
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +113
ASP.ado_aspx.SubmitForm(Object sender, EventArgs e) in e:\ectserver\ADELEO10\ado.aspx:165
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
这是页面背后的代码:
public void SubmitForm(object sender, EventArgs e)
{
if(Page.IsValid)
{
string provider = ConfigurationManager.ConnectionStrings["databaseConnString"].ProviderName;
DbProviderFactory factory = DbProviderFactories.GetFactory(provider);
//Open Connection
DbConnection conn = factory.CreateConnection();
//Assign Connection String
conn.ConnectionString = ConfigurationManager.ConnectionStrings["databaseConnString"].ConnectionString;
//Connection Open
conn.Open();
//Initialize Command
DbCommand comm = conn.CreateCommand();
//Tell command which connection it will use
comm.Connection = conn;
//Give command SQL to execute
comm.CommandText ="Insert into userinfo(UserName, Passwrd, FirstName, LastName, Address, Address2, City, State, ZipCode, Email, Gender, Age, ShirtSize, PantSize, EmailSubscribe) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
DbParameter param;
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = userName.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = password.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = firstName.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = lastName.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = address.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = address2.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = city.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = state.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.Int32;
param.Direction = ParameterDirection.Input;
param.Value = Int32.Parse(zipCode.Text);
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = email.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = GenderRadioGroup.Text;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.Int32;
param.Direction = ParameterDirection.Input;
param.Value = Int32.Parse(age.Text);
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = drpShirtSizeCategory.SelectedValue;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = drpPantSizeCategory.SelectedValue;
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = EmailRadioGroup.Text;
comm.Parameters.Add(param);
//Execute command get back result via reader
int totalCount = comm.ExecuteNonQuery();
DbCommand comm2 = conn.CreateCommand();
comm2.CommandText = "Select @@Identity";
comm2.Connection = conn;
String id = comm2.ExecuteScalar().ToString();
conn.Close();
lblMessage.Text = "ID of User Added = " +id;
}
}
任何帮助表示赞赏。谢谢!