2013-10-03 3 views
0

У меня есть SQL-вставка в моем коде, и когда я нажимаю кнопку, кажется, что обновляет элемент управления Textbox на моей странице, а не мою базу данных. Вот код позади:SQL-код не работает в моем коде

protected void UpdatePic(object sender, EventArgs e) 
{ 
    string constr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\TravelJoansDB.mdb;"; 
    string cmdstr = "INSERT INTO BlogEntryItems(Picture) VALUES (@UpdatedPic)"; 

    OleDbConnection con = new OleDbConnection(constr); 
    OleDbCommand com = new OleDbCommand(cmdstr, con); 

    TextBox uPic = (TextBox)DataList1.Items[1].FindControl("BEIPictureField"); 

    con.Open(); 
    com.Parameters.Add("@UpdatedPic", uPic.Text); 
    com.ExecuteNonQuery(); 
    con.Close(); 
} 

код ASP для кнопки, где событие OnClick вызывает этот метод:

<asp:DataList ID="DataList1" runat="server" DataSourceID="AccessDataSource1"> 
<ItemStyle /> 
<ItemTemplate> 
    <table> 
     <tr> 
      <td> 
       <br /> 
       <asp:Image ID="Image1" CssClass="placePicCenter" runat="server" 
       BorderWidth="1px" 
       BorderColor="#EEEEEE" 
       ImageUrl='<%# "PlaceImages/" + Eval("Picture") %>' /><br /> 
       <asp:TextBox ID="BEIPictureField" runat="server" Text='<%# Bind("Picture") %>' /><br /> 
       <asp:Button ID="UpdatePicButton" runat="server" Text="Update" OnClick="UpdatePic" /> 
       <br /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <asp:Label ID="Label4" CssClass="placeBodyStyle" runat="server" Text='<%# Eval("PicText1") %>' /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       &nbsp; 
      </td> 
     </tr> 
    </table> 
</ItemTemplate> 
</asp:DataList> 
+1

Какое значение возвращается из 'ExecuteNonQuery'? –

+1

Если вы отлаживаете это в visual studio, выполняется ExecuteNonQuery()? Кроме того, как вы проверяете свою базу данных? Иногда это проблема. –

+0

Как проверить, какое значение возвращается из команды ExecuteNonQuery? Я проверяю свою базу данных, открывая ее, а затем открываю таблицу. Это база данных Access. – Joseph

ответ

1

Там может быть несколько причин, это происходит без дополнительной информации от вас, это это просто выстрел в темноте.

  1. Убедитесь, что у вас есть права на запись в базу данных.
  2. Попробуйте изменить строку подключения на использование имени компьютера или IP-адреса вместо DataDirectory | для подключения.
+0

Это должно быть опубликовано как комментарий, а не ответ. – MikeSmithDev

+0

Лицо, разместившее его, не имеет достаточно высокой репутации для публикации комментариев. –

+0

Верно, Дэн. Извините, если он не пройдет ваш сбор, Майк, но в настоящее время это единственный способ попробовать и помочь другим пользователям. –

0

Что такое тип данных столбца подчеркивания? Поскольку в зависимости от типа данных для Microsoft Access, blob/binary имеют разный размер.

В соответствии с Data Type Support (OLE DB):

  • BigBinaryDBTYPE_BYTES 4000 байт
  • LongBinaryDBTYPE_BYTES 1,073,741,823 байт
  • VARBINARYDBTYPE_BYTES 510 байтов

Кроме того, почему бы вам не использовать SQL Server Express with ASP.Net? Это free.

Команда строка приложенный файл SQL Express легко:

string constr = @"Data Source=.\SQLEXPRESS;AttachDbFileName=e:\data\Customers.mdf;Integrated Security=True;User Instance=True"; 
+0

Верьте мне, в следующий раз я буду использовать SSE. Основной тип данных - это строка. – Joseph

Смежные вопросы