PDA

View Full Version : مشکل با ارسال داده به اکسس



khz-web1
شنبه 01 دی 1386, 14:04 عصر
با سلام
من روی فرم خودم از دو textbox و یک label و یک button استفاده می کنم

در روی داد کلیک دکمه این کد رو گزاشتم


ProtectedSub Button1_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles Button1.Click
Dim con As OleDbConnection
Dim cmd As OleDbCommand
Dim str AsString
con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=D:\ASP.NET-projeh\WebSite10\khzwebuser.mdb")
str = "insert into news(title,body-text) values(@title,@body-text)"
cmd = New OleDbCommand(str, con)
cmd.Parameters.Add("@title", TextBox1.Text)
cmd.Parameters.Add("@body-text", TextBox2.Text)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
EndSub
EndClass


و این فضای نام را وارد کردم



Imports System.Data.OleDb
Imports System.Data


با تشکر فراوان

سار
شنبه 01 دی 1386, 15:55 عصر
اولن این body-text رو عوض کن به body_text
و بعدش!!!
قرار چه اتفاقی رخ بده که نمیده؟

khz-web1
شنبه 01 دی 1386, 17:00 عصر
باید اطلاعات رو از فیلد بگیره و بعد به بانک اطلاعاتی ارسال کند

که از cmd.ExecuteNonQuery() ایراد میگیره

به اینصورت که با استفاده از خاصییت پاسینگ این اتفاق باید بیوفته

azmoodeh
شنبه 01 دی 1386, 17:54 عصر
سلام.اول اینکه باید خدمتتون عرض کنم که کلاس OLEDb به نسبت کلاس SQLخیلی حساس تر هست .به همین دلیل سعی کنید تا اونجایی که می تونید استانداردهای کدینگتون نزدیک به کدهایی باشه که توی سایتهای معتبر می بینید.من الان چیز خاص به ذهنم نمی رسه.اما برای اطمینان بعد از تذکری که دوستمون در بالا دادند یه تست کنید و برای هر پارامتری که در SQL Statement وجود داره یک آبجکت کاملا مجزا بسازید و آخر SQL Statement هم ; رو فراموش نکنید.

موفق باشید

khz-web1
شنبه 01 دی 1386, 19:35 عصر
برای هر پارامتری که در SQL Statement وجود داره یک آبجکت کاملا مجزا بسازید و آخر SQL Statement هم ; رو فراموش نکنید.


میشه کمی بیشتر راجب این موضوع توضیح بدید
اگه نیاز میدونید من پروژه را ضمیمه کنم
با تشکر فراوان

azmoodeh
شنبه 01 دی 1386, 19:47 عصر
میشه کمی بیشتر راجب این موضوع توضیح بدید
اگه نیاز میدونید من پروژه را ضمیمه کنم
با تشکر فراوان

بله ، اگر پروژه رو بفرستید بهتر می تونم کمک کنم.البته اگر هم متن ایراد رو دقیقا بگید خیلی می تونه کمک کنه.

khz-web1
یک شنبه 02 دی 1386, 15:21 عصر
با سلام
این پروژه هستش

http://www.poyesh.ir/ASP.NET/web-asp.net.zip


با تشکر

amirali_1341
یک شنبه 02 دی 1386, 19:35 عصر
یه برنامه برای نوشتن چک دراکسس میخواهم بنویسم چطور بنویسم راهنمائی کنید

khz-web1
یک شنبه 02 دی 1386, 20:16 عصر
یه تاپیک باز کنی بهتره ، اینجا مطرح نکن

دوستان من هنوز مشکلم حل نشده کمک کنید

khz-web1
دوشنبه 03 دی 1386, 12:29 عصر
بله ، اگر پروژه رو بفرستید بهتر می تونم کمک کنم.البته اگر هم متن ایراد رو دقیقا بگید خیلی می تونه کمک کنه.

آقای آزموده ما منتظر جواب و راهنمایی های شما هستیم

با تشکر

azmoodeh
دوشنبه 03 دی 1386, 12:33 عصر
سلام دوست عزیز

ببخشید.من به دلیل مشغله کاری فقط شبها می تونم روی کارهای شخصی ام کار کنم.حتما امشب سعی میکنم روی پروژه ارسالی شما کار کنم.

khz-web1
سه شنبه 11 دی 1386, 01:55 صبح
از دوستان حتی اگه کسی هم یک مثال بسازه و بزاره ممنون میشیم

با تشکر فراوان

e-shahshahani
پنج شنبه 20 دی 1386, 18:05 عصر
فکر کنم چون فیلد هایی که استفاده می کنی string هستند به این مشکل می خوری. بهتره با OleDbDataAdapter و OleDbCommandBuilder کار کنی. مثال زیر از msdn برداشتم :

public static DataSet UpdateRows(string connectionString,
string queryString, string tableName)
{
DataSet dataSet = new DataSet();
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(queryString, connection);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);

connection.Open();

adapter.Fill(dataSet, tableName);

//code to modify data in DataSet here

//Without the OleDbCommandBuilder this line would fail
adapter.Update(dataSet, tableName);

connection.Close();
}
return dataSet;
}



برای مطالعه بیشتر در مورد OleDbCommandBuilder جستجو کن.
موفق باشید

khz-web1
جمعه 21 دی 1386, 12:35 عصر
دوست عزیز و من تو یه کتاب خوندم که مشکلی پیش نمیاد و حتی من این کد رو از روی اون کتاب نوشتم .... !!! میشه یه مثال واضح تر از vb.net بزنید ....

با تشکر فراوان

khazon
شنبه 22 دی 1386, 01:47 صبح
با سلام
اگه از ASP.NET 2005 و زبان VB استفاده می کنین ، ابتدا از قسمت ADD Refrence کامپوننت ododb.dll رو به پرژتون اضافه کنید . سپس در قسمت کلیک باتون این کد رو بذارین .





Dim conn AsNew ADODB.Connection
Dim str AsString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("khzwebuser.mdb")
conn.Open(str)
Dim Sql AsString

Sql = "SELECT * FROM news"

Dim rs AsNew ADODB.Recordset
rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient
rs.Open(Sql, conn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockPessimistic)
rs.AddNew()
rs.Fields("title").Value = Textbox1.Text
rs.Fields("body_text").Value = Textbox2.Text
rs.UpdateBatch()
rs.Close()
rs = Nothing

Sql = Nothing

str = Nothing

conn = Nothing

البته به روش Inser که خودتون هم نوشتین میشه و هیچ مشکلی نیست .
فقط یه نکته ، اگه پرژه رو می خواین تو اینترنت قرار بدین ، باید فولدر Bin رو به پرژتون اضاکه کنین و تو سیستمتون فایل ododb.dll رو سرچ کرده و تو فولدر Bin کپی کنین . در غیر اینصورت پرژتون تو اینترنت جواب نمیده .