PDA

View Full Version : Insert Query



amir_hm
شنبه 08 مهر 1385, 17:49 عصر
من توی vb.net2 این کد را نوشتم


cmdInsert = New SqlCommand("Insert_Role", cn)
cmdInsert.CommandType = CommandType.StoredProcedure

parmRoleName = cmdInsert.Parameters.Add("RoleName", SqlDbType.NVarChar, 50)
parmRoleName.Value = Me.TxtRoleName.Text.Trim

cn.Open()
cmdInsert.ExecuteNonQuery()
cn.Close()

اما چیزی داخل دیتابیس نمی نویسه (هیچ خطایی هم نمی گیره)
در ضمن همان موقع که این کد اجرا می شود اگر یک Select Query بگیرم آنرا نشان می دهد(چیزی که Insert شده) اما درون دیتابیس درج نمی شود
مشکل من کجاست

amir_hm
یک شنبه 09 مهر 1385, 11:41 صبح
کسی تا حالا با این مشکل برخورد نکرده؟
من حتی این کد را هم نوشتم


Me.RoleDA.Fill(Me.Ds1.Role)
Dim DR As DataRow
DR = Me.Ds1.Role.NewRow
DR.Item(1) = Me.TxtRoleName.Text.Trim
Me.Ds1.Role.Rows.Add(DR)

Me.RoleDA.Update(Me.Ds1.Role)

ولی باز هم چیزی توی دیتابیس insert نمی کنه (خطایی هم نمی گیره)

titbasoft
یک شنبه 09 مهر 1385, 12:23 عصر
احتمالا مشکل از نحوه ست کردن Isolation Level هاتون ممکنه باشه. برای کانکشن ترنزکشن تعریف کردید؟

amir_hm
یک شنبه 09 مهر 1385, 13:33 عصر
احتمالا مشکل از نحوه ست کردن Isolation Level هاتون ممکنه باشه. برای کانکشن ترنزکشن تعریف کردید؟
بله ترنزکشن تعریف کردم
حتی در حالت دوم که با استفاده از دیتاست است از دیتاست و دیتا آداپتور خود VB در زمان طراحی استفاده کردم

titbasoft
یک شنبه 09 مهر 1385, 14:16 عصر
کد کامل رو اینجا بزارید.

amir_hm
یک شنبه 09 مهر 1385, 15:27 عصر
کد کامل رو اینجا بزارید.


Private Sub btnCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreate.Click
If Me.TxtRoleName.Text.Trim.Length <> 0 Then
Dim cn As New SqlConnection(stConnection)
Dim cmdSearch As SqlCommand
Dim parmRoleName, parmCnt As New SqlParameter
Dim DA As SqlDataAdapter

cmdSearch = New SqlCommand("Role_Count_Add", cn)
cmdSearch.CommandType = CommandType.StoredProcedure
parmRoleName = cmdSearch.Parameters.Add("RoleName", SqlDbType.NVarChar, 50)
parmRoleName.Value = Me.TxtRoleName.Text.Trim

DA = New SqlDataAdapter(cmdSearch)
cn.Open()
DA.Fill(Me.Ds1.Role)
Dim cnt As Int16 = Me.Ds1.Role.Rows.Count
cn.Close()
Me.Ds1.Clear()

If cnt = 0 Then
Me.RoleDA.Connection.ConnectionString = stConnection
Me.RoleDA.Fill(Me.Ds1.Role)
Dim DR As DataRow
DR = Me.Ds1.Role.NewRow
DR.Item(1) = Me.TxtRoleName.Text.Trim
Me.Ds1.Role.Rows.Add(DR)

Me.RoleDA.Update(Me.Ds1.Role)

Me.TxtRoleName.Text = ""
Me.Ds1.Clear()
Me.Ds1.Dispose()

Else
MsgBox(" Role Name Exist,Please Enter another name", MsgBoxStyle.Critical, "Error")
Me.Ds1.Clear()
Me.Ds1.Dispose()
Exit Sub
End If
Else
MsgBox("Please Enter Role Name", MsgBoxStyle.Critical, "Error")
End If
End Sub


DS1: دیتاستی که خود VB می سازد و Insert , Update , ... برای آن تعریف شده
RoleDA: دیتا آداپتری که به DS1 متصل است
البته ترنزکشن ها را حذف کردم
قسمت اول یعنی select درست کار می کنه ولی قسمتی که باید insert کنه مشکل داره

titbasoft
یک شنبه 09 مهر 1385, 17:46 عصر
این کد مشکلی نداره. مشکل در جای دیگه ای.

ضمنا منظور من کدی که به صورت Connected (حالت اول) نوشته بودید، بود.

amir_hm
یک شنبه 09 مهر 1385, 20:50 عصر
این کد مشکلی نداره. مشکل در جای دیگه ای.

این امکان وجود داره که اشکال از سیستمم باشه؟ چون قبلاً از اینتل استفاده می کردم و حالا از AMD

titbasoft
یک شنبه 09 مهر 1385, 21:46 عصر
این امکان وجود داره که اشکال از سیستمم باشه؟ چون قبلاً از اینتل استفاده می کردم و حالا از AMDخیر،

1) یک بار ترنزکشن ها رو چک کنید
2) اگر تغیراتی در دیزاین تایم روی کنترل ها ایجاد کردید، اونها رو به حالت پیش فرض برگردونید
3) Command ها رو چک کنید (UpdateCommand, InsertCommand)

پیشنهاد من اینه که اگر با کار کردن به صورت Disconnected با ADO راحت نیستید، به صورت Connected با اون کار کنید (حالت اول در پست اول)

amir_hm
یک شنبه 09 مهر 1385, 22:16 عصر
یک چیز جالب: من برنامه را publish کردم و وقتی برنامه را نصب کردم برنامه درست جواب می دهد اما وقتی دیتابیس را باز می کنم این سطرها وجود ندارند در حالیکه وقتی برنامه مجدداً اجرا می شود حتی با راه اندازی مجدد کامپیوتر این سطرها در برنامه هستند

پیشنهاد من اینه که اگر با کار کردن به صورت Disconnected با ADO راحت نیستید، به صورت Connected با اون کار کنید (حالت اول در پست اول)
موضوع اینه که به صورت Connected هم مشکل دارم
ببینید کد Me.RoleDA.Update(Me.Ds1.Role) کار می کند فقط نمی دانم کجا را update می کنه؟
چون اگه بعد از کد بالا سریع بنویسم Me.RoleDA.Fill(Me.Ds1.Role)
سطری را که اضافه کردم را نمایش میدهد ولی اگر برنامه راببندم و دوباره باز کنم این سطر وجود ندارد

2) اگر تغیراتی در دیزاین تایم روی کنترل ها ایجاد کردید، اونها رو به حالت پیش فرض برگردونید
خیر هیچ تغییری انجام ندادم

نمی دانم مشکل کجاست چون قبلاً با VB 2003 این مشکلات را نداشتم

amir_hm
دوشنبه 10 مهر 1385, 09:28 صبح
مشکل را پیدا کردم زمانی که VB ، دیتاست درست می کرد connectionstring را به این صورت تنظیم می کرد


connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Data\WarehousingDB.mdf;Integrated Security=True;User Instance=True"

حالا من آدرس واقعی به آن دادم و مشکل حل شد


AttachDbFilename=D:\MyProject\Data\DB.mdf;

اما اینم یه مشکله چون نمی شه آدرس مجازی داد

meysam2007
چهارشنبه 19 اردیبهشت 1386, 17:47 عصر
اگه توی 2005باویزاردها کار میکنی حواست باشه اون قسمت اوی که دیتا بیس روانتخاب میکنی اگه دیتا بیس توی پوشه ی پروژه نباشه ویژوال استدیو یه کپی از دیتا بیس تو پوشه برنامت میزاره و دیتا بیس هات دو تا میشه سعی کن با کد پروژه خودت رو بنویسی

wonder_man
شنبه 29 اردیبهشت 1386, 16:30 عصر
لطفا کد برنامه وکد کانکشن رو برام بزار تا برات درست کنم