protected void btnUpload_Click(object sender, EventArgs e)
{
if (FileUpload1.PostedFile != null)
{
string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
//Save files to disk
FileUpload1.SaveAs(Server.MapPath("" + FileName));
//Add Entry to DataBase
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
OleDbConnection con = new OleDbConnection(strConnString);
string strQuery = "INSERT INTO image([FileName],[FilePath],[AlbumName]) Values(@FN, @FP, @AN)";
OleDbCommand cmd = new OleDbCommand(strQuery);
cmd.Parameters.AddWithValue("@FN", FileName);
cmd.Parameters.AddWithValue("@FP", "images/" + FileName);
cmd.Parameters.AddWithValue("@AN", txtAlbumname.Text.ToString());
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
con.Close();
con.Dispose();
}
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string var = DropDownList1.SelectedItem.ToString();
txtAlbumname.Text = var.ToString();
}
}
Я пробовал почти все, но эта ошибка продолжается. Я надел скобки и оставил зарезервированные слова, но эта ошибка показывается
Поставщик OLE DB.NET
не поддерживает именованные параметры для передачи параметров в оператор SQL или хранимую процедуру, OleDbCommand
когда CommandType
установлен в Text. В этом случае необходимо использовать question mark (?)
. Например:
SELECT * FROM Customers WHERE CustomerID =?
Поэтому порядок, в котором объекты OleDbParameter
добавляются в OleDbParameterCollection
должен непосредственно соответствовать позиции заполнителя вопросительного знака для параметра в тексте команды.
Например
OleDbCommand command = new OleDbCommand(queryString, connection);
command.CommandText =
"SELECT CustomerID, CompanyName FROM Customers WHERE Country = ? AND City = ?";
command.Parameters.Add(parameters);
for (int j=0; j<parameters.Length; j++)
{
command.Parameters.Add(parameters[j]) ;
}
для справки. MSDN
IMAGE
является зарезервированным словом в Access SQL, поэтому для использования его в качестве имени таблицы вы также должны заключать его в квадратные скобки:
string strQuery = "INSERT INTO [image] ([FileName], ...