MS Access データベースにデータ行を挿入しようとしています。これを VS でデバッグすると、問題は発生しませんが、行は挿入されません。このクエリは、行を挿入していないことが判明しています。私の日付は文字列で、正しくフォーマットされています。パラメータ リストで 18 個の値を渡していますが、これを行うにはもっと簡単な方法が必要です。OleDb のパラメーターを使用する別の方法はありますか? 私は私の方法の下に投稿しました。私の構文が正しいかどうかを確認できますか? それでもうまくいきません。
情報を渡す場所は次のとおりです。
rowsAdded = ((DataAccessLayer)Application["dbAccess"]).insert("Employees", txtLname.Text, txtFname.Text, txtTitle.Text, txtCourt.Text,
txtAddress.Text, txtCity.Text, txtCountry.Text, txtHomePhone.Text, txtExtension.Text, int.Parse(txtReports.Text), txtPassword.Text,
txtPostalCode.Text, txtNotes.Text, txtRegion.Text, txtHireDate.Text, txtBday.Text, upPhoto.FileName.ToString());
ここで、このメソッドを使用してデータベースにクエリを実行します
public int insert(string tablename, string lname, string fname, string title, string toc, string address, string city,
string country, string phone, string ext, int report, string pass, string postal, string notes, string region,
string hire, string birth, string photo)
{
string tblName = tablename;
string last = lname;
string first = fname;
string tlt = title;
string tOfc = toc;
string addy = address;
string town = city;
string reg = country;
string phum = phone;
string exten = ext;
int rep = report;
string pas = pass;
string pc = postal;
string note = notes;
string regions = region;
string hD = hire;
string bD = birth;
string pho = photo;
int rows = 0;
int ID = 0;
string insertString = "INSERT INTO @tablename ([EmployeeID],[LastName],[FirstName],[Title],[TitleOfCourtesy],[Address],[City]," +
"[Country],[HomePhone],[Extension],[ReportsTo],[Password],[PostalCode],[Notes],[Region], [HireDate],[BirthDate],[Photo]) VALUES (" +
ID + ", @lname, @fname, @title, @toc, @addy, @city, @country," +
"@phone, @ext, @report, @pass, @postal, @notes,@region, @hire, @birth, @photo)";
string queryLast = "Select @@Identity";
try
{
conn.Open();
oleCommand = new OleDbCommand(insertString, conn);
oleCommand.CommandText = queryLast;
ID = (int)oleCommand.ExecuteScalar();
oleCommand.Parameters.AddWithValue("@tablename", tblName);
oleCommand.Parameters.AddWithValue("@lname", last);
oleCommand.Parameters.AddWithValue("@fname", first);
oleCommand.Parameters.AddWithValue("@title", tlt);
oleCommand.Parameters.AddWithValue("@toc", tOfc);
oleCommand.Parameters.AddWithValue("@addy", addy);
oleCommand.Parameters.AddWithValue("@city", town);
oleCommand.Parameters.AddWithValue("@country", reg);
oleCommand.Parameters.AddWithValue("@phone", phum);
oleCommand.Parameters.AddWithValue("@ext", exten);
oleCommand.Parameters.AddWithValue("@report", rep);
oleCommand.Parameters.AddWithValue("@pass", pas);
oleCommand.Parameters.AddWithValue("@region", regions);
oleCommand.Parameters.AddWithValue("@postal", pc);
oleCommand.Parameters.AddWithValue("@notes", note);
oleCommand.Parameters.AddWithValue("@hire", hD);
oleCommand.Parameters.AddWithValue("@birth", bD);
oleCommand.Parameters.AddWithValue("@photo", pho);
oleCommand.ExecuteNonQuery();
rows = (int)oleCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
dbError = "Add Employee command Error: " + ex.Message;
}
finally
{
conn.Close();
}
return rows;
}