私はこれを行う方法を見つけようと非常に苦労しています。テキストボックスからの入力を許可すると、管理者はArchive_Decade_Tblのデータを更新し、写真を追加することを選択した場合はArchive_Image_Tblに行を挿入できます。私は更新クエリが動作しているが、私は私の人生のために挿入作業を取得することはできません。私は非常に新しいので、私のコードはおそらくあなたのほとんどにうんざりに見えるだろうと意識して、私は現時点でのセキュリティを心配していないので、私はSQL注入の脆弱性を知っているしかし助けてください挿入クエリを機能させるには、書式設定のヘルプが必要です
ここにあります更新機能のためのコード:今
protected void update_Clicked(object sender, EventArgs e){
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~\\database\\ARCHIVE_MASTER_DATABASE.accdb") + "; Persist Security Info=False;";
DataSet infoDs = new DataSet();
OleDbDataAdapter OleDbAdapter;
classMe.Attributes.Add("class", "productInfoContainerNoFloat");
string cmd1 = @"Select * From ARCHIVE_DECADE_TBL WHERE [email protected]";
string cmd2 = @"Select * From ARCHIVE_IMAGE_TBL WHERE [email protected]";
OleDbConnection dbConn = new OleDbConnection(connectionString);
try
{
dbConn.Open();
OleDbAdapter = new OleDbDataAdapter(cmd1, dbConn);
OleDbAdapter.SelectCommand.Parameters.Add("@buttonClicked", OleDbType.Integer).Value = archiveIdNumber.InnerText.Substring(33);
OleDbAdapter.Fill(infoDs, "First Table");
OleDbAdapter.SelectCommand.CommandText = cmd2;
OleDbAdapter.Fill(infoDs, "Second Table");
OleDbAdapter.Dispose();
string cmdString = "Update ARCHIVE_DECADE_TBL Set PRODUCT_NAME='" + Request.Form["nameBox"] + "', MODEL_NUMBER='" + Request.Form["modelBox"] + "', YEAR_INTRODUCED='" + Request.Form["startBox"] + "', YEAR_DISCONTINUED='" + Request.Form["endBox"] + "', PRODUCT_LINE='" + Request.Form["lineBox"] + "', LOCATION='" + Request.Form["locationBox"] + "', QUANTITY='" + int.Parse(Request.Form["quantityBox"]) + "' " +
"Where ARCHIVE_ID_NUMBER=" + int.Parse(Request.Form["archiveBox"]);
OleDbAdapter.UpdateCommand = new OleDbCommand(cmdString, dbConn);
OleDbAdapter.UpdateCommand.ExecuteNonQuery();
dbConn.Close();
if (addPhotos.HasFiles)
{
//cmdString = "Update ARCHIVE_DECADE_TBL Set PRODUCT_NAME='" + Request.Form["nameBox"] + "', MODEL_NUMBER='" + Request.Form["modelBox"] + "', YEAR_INTRODUCED='" + Request.Form["startBox"] + "', YEAR_DISCONTINUED='" + Request.Form["endBox"] + "', PRODUCT_LINE='" + Request.Form["lineBox"] + "', LOCATION='" + Request.Form["locationBox"] + "' " +
//"Where ARCHIVE_ID_NUMBER=" + int.Parse(Request.Form["archiveBox"]);
var x = 0;
if (!System.IO.Directory.Exists(Server.MapPath("includes/images/archives/" + Request.Form["archiveBox"] + "_1")))
{
System.IO.Directory.CreateDirectory(Server.MapPath("includes/images/archives/" + Request.Form["archiveBox"] + "_1"));
}
String filePath = Server.MapPath("includes/images/archives/" + Request.Form["archiveBox"] + "_1");
HttpFileCollection uploadedFiles = Request.Files;
for (int i = 0; i < uploadedFiles.Count; i++)
{
HttpPostedFile userPostedFile = uploadedFiles[i];
if (userPostedFile.ContentLength > 0)
{
string extension = Path.GetExtension(userPostedFile.FileName);
//Request.Form["archiveBox"] + "_" + i will be the same as the "IMAGE" column in the IMAGE_TBL
uploadedFiles[i].SaveAs(filePath + "/" + Request.Form["archiveBox"] + "_" + (i + 1) + extension);
}
x++;
}
OleDbConnection dbConn2 = new OleDbConnection(connectionString);
OleDbDataAdapter OleDbAdapter2;
DataSet infoDs2 = new DataSet();
try
{
dbConn2.Open();
OleDbAdapter2 = new OleDbDataAdapter(cmd1, dbConn);
string cmdString2 = "INSERT INTO ARCHIVE_IMAGE_TBL (ARCHIVE_ID_NUMBER, MODEL_NUMBER, LOCATION, IMAGE, NUMBER_OF_IMAGES, IMAGE_FILE_TYPE) VALUES ('" + Request.Form["archiveBox"].ToString() + "', '" + Request.Form["modelBox"].ToString() + "', '" + Request.Form["locationBox"].ToString() + "', '" + Request.Form["archiveBox"].ToString() + "_1" + "', '" + uploadedFiles.Count.ToString() + "', 'jpg');";
testLbl.InnerText = cmdString2;
OleDbAdapter2.InsertCommand = new OleDbCommand(cmdString2, dbConn2);
OleDbAdapter2.InsertCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
}
}
}
catch (Exception ex)
{
}
}
私はラベル、コピー/貼り付けに文字列を印刷しているため、私は取得していますすべてが構文エラーが私のINSERT INTO文であるということですが、私はなぜ知りませんそれはアクセスに入り、それは私が望むものを正確にした
正確な構文エラー – logixologist
ヒント:適切なソフトウェア(MySQL、Oracle、DB2、...)とバージョンの両方でデータベース質問にタグを付けると便利です。 'sql-server-2014'です。構文と機能の相違は、しばしば答えに影響します。 – HABO