2014-09-29 108 views
1
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(); 
} 
} 

我已经尝试了几乎所有的东西,但是这个错误不断出现。 我已经把在括号藏汉柜面的保留字,但还是这个错误是显示为什么我在INSERT INTO语句中出现语法错误?

+2

请包括错误。 – 2014-09-29 09:48:40

+0

试一试 INSERT INTO image(FileName,FilePath,AlbumName)值(@FN,@FP,@AN)“; – 2014-09-29 09:53:36

+0

@ByteBlast我已经包含语法错误Inser INto语句中的错误 – 2014-09-29 09:57:30

回答

1

CommandType被设置为在OLE DB .NET供应商不支持命名的参数,将参数传递给SQL语句或由OleDbCommand调用的存储过程文本。在这种情况下,必须使用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

0

IMAGEreserved word在访问SQL所以用它作为表名,还必须将其括在方括号:

string strQuery = "INSERT INTO [image] ([FileName], ... 
+0

非常感谢!! :)它工作 – 2014-09-29 11:01:05