View Full Version : Insert Query
  
amir_hm
شنبه 08 مهر 1385, 18: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, 12: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, 13:23 عصر
احتمالا مشکل از نحوه ست کردن Isolation Level هاتون ممکنه باشه. برای کانکشن ترنزکشن تعریف کردید؟
amir_hm
یک شنبه 09 مهر 1385, 14:33 عصر
احتمالا مشکل از نحوه ست کردن Isolation Level هاتون ممکنه باشه. برای کانکشن ترنزکشن تعریف کردید؟
بله  ترنزکشن تعریف کردم
حتی در حالت دوم که با استفاده از دیتاست است از دیتاست و دیتا آداپتور خود VB در زمان طراحی استفاده کردم
titbasoft
یک شنبه 09 مهر 1385, 15:16 عصر
کد کامل رو اینجا بزارید.
amir_hm
یک شنبه 09 مهر 1385, 16: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, 18:46 عصر
این کد مشکلی نداره. مشکل در جای دیگه ای. 
ضمنا منظور من کدی که به صورت Connected (حالت اول) نوشته بودید، بود.
amir_hm
یک شنبه 09 مهر 1385, 21:50 عصر
این کد مشکلی نداره. مشکل در جای دیگه ای. 
این امکان وجود داره که اشکال از سیستمم باشه؟ چون قبلاً از اینتل استفاده می کردم و حالا از AMD
titbasoft
یک شنبه 09 مهر 1385, 22:46 عصر
این امکان وجود داره که اشکال از سیستمم باشه؟ چون قبلاً از اینتل استفاده می کردم و حالا از AMDخیر،
1) یک بار ترنزکشن ها رو چک کنید
2) اگر تغیراتی در دیزاین تایم روی کنترل ها ایجاد کردید، اونها رو به حالت پیش فرض برگردونید
3) Command ها رو چک کنید (UpdateCommand, InsertCommand)
پیشنهاد من اینه که اگر با کار کردن به صورت Disconnected با ADO راحت نیستید، به صورت Connected با اون کار کنید (حالت اول در پست اول)
amir_hm
یک شنبه 09 مهر 1385, 23: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, 10: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, 18:47 عصر
اگه توی 2005باویزاردها کار میکنی حواست باشه اون قسمت اوی که دیتا بیس روانتخاب میکنی اگه دیتا بیس توی پوشه ی پروژه نباشه ویژوال استدیو یه کپی از دیتا بیس تو پوشه برنامت میزاره و دیتا بیس هات دو تا میشه سعی کن با کد پروژه خودت رو بنویسی
wonder_man
شنبه 29 اردیبهشت 1386, 17:30 عصر
لطفا کد برنامه وکد کانکشن رو برام بزار تا برات درست کنم
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.