我正在ASP/C#中編寫一個頁面,我必須採取我創建的表單並將其插入MS Access數據庫。在MS Access數據庫是建立具有以下字段:從ASP/C#Web表單插入數據到Access數據庫
ID, UserName, Passwrd, FirstName, LastName, Address, Address2, City, State, ZipCode, Email, Gender, Age, ShirtSize, PantSize, EmailSubscribe.
,我發現了以下錯誤:
Exception Details: System.Data.OleDb.OleDbException: No value given for one or more required parameters.
我無法弄清楚哪個參數缺少值。這裏是堆棧跟蹤:
[ 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;
}
}
任何幫助表示讚賞。謝謝!
檢查了這一點http://stackoverflow.com/questions/5893837/using-parameters-inserting-data-into-access-database – Arshad 2013-05-13 13:06:00
是'ID'確實是一個自動增量字段或您需要設置值「手動「? – Corak 2013-05-13 13:12:11
也許一個或多個列的命名有所不同? – Steve 2013-05-13 13:13:28