string filename = Path.GetFileName(item);
パラメータ化されたクエリ ループを使用して変数内の 1 つのファイル名を何度も取得すると、このコードに問題があります。
string[] filePaths = Directory.GetFiles(Server.MapPath("~/Gallery/GalleryImage/" + newtable));
int a = 0;
OleDbCommand cmd = new OleDbCommand();
OleDbConnection mycon = new OleDbConnection();
mycon.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AGENTJ.AGENTJ-PC\Documents\Visual Studio 2010\WebSites\mfaridalam\App_Data\mfaridalam1.accdb";
cmd = mycon.CreateCommand();
mycon.Open();
DateTime dateTime = DateTime.UtcNow.Date;
foreach (string item in filePaths)
{
a++;
string filename = Path.GetFileName(item);
string ips = "00" + a.ToString();
// Response.Write("Number (" + a.ToString() + ") " + filename + " " + ips + " " + t1 + " " + v + " " + some + " " + some + "<br/><br/>");
// cmd.CommandText = "INSERT INTO [Image] ([Image],[Sort],[Created],[Albumid],[Description],[title])VALUES('" + filename + "','" + ips + "','" + dateTime.ToString("dd/MM/yyyy") + "','" + newtable + "','" + TextBox4.Text + "','" + TextBox3.Text + "')";
cmd.CommandText = "INSERT INTO [Image] ([Image],[Sort],[Created],[Albumid],[Description],[title])VALUES (?,?,?,?,?,?)";
cmd.Parameters.AddWithValue("@p1", filename);
cmd.Parameters.AddWithValue("@p2", ips);
cmd.Parameters.AddWithValue("@p3", dateTime.ToString("dd/MM/yyyy"));
cmd.Parameters.AddWithValue("@p4", newtable);
cmd.Parameters.AddWithValue("@p5", TextBox4.Text);
cmd.Parameters.AddWithValue("@p6", TextBox3.Text);
cmd.ExecuteNonQuery();
}
しかし、通常の挿入クエリを使用すると
cmd.CommandText = "INSERT INTO [Image] ([Image],[Sort],[Created],[Albumid],[Description],[title])VALUES('" + filename + "','" + ips + "','" + dateTime.ToString("dd/MM/yyyy") + "','" + newtable + "','" + TextBox4.Text + "','" + TextBox3.Text + "')";
ループは正常に機能し、特定の場所にあるファイルのすべての名前を取得します。理由を教えてください。私のロジックに問題はありますか?