Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,936

HOME > .NET Framework > Forum > ช่วยดู Bug ให้หน่อยครับ จะขึ้นข้อความว่าConnection must be valid and open ซึ่งจะเป็นเฉพาะตอนที่เพิ่มแถวข้อมูลใหม่



 

ช่วยดู Bug ให้หน่อยครับ จะขึ้นข้อความว่าConnection must be valid and open ซึ่งจะเป็นเฉพาะตอนที่เพิ่มแถวข้อมูลใหม่

 



Topic : 040626



โพสกระทู้ ( 482 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์




Code (VB.NET)
Imports System.Data
Imports MySql.Data.MySqlClient
Public Class Form1
    Dim StrCon = "Server=127.0.0.1;user id=root;password=1234;Database=convb"
    Dim Con As New MySqlConnection(StrCon)
    Dim Da As New MySqlDataAdapter
    Dim DS As New DataSet
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Sql = "select * from student"
        Da.MissingSchemaAction = MissingSchemaAction.AddWithKey
        Da.SelectCommand = New MySqlCommand(Sql, Con)
        Try
            Da.Fill(DS, "std")
            GridShow.DataSource = DS.Tables("std")
            Obj = Me.BindingContext(DS.Tables("std"))
            Call Btn_Status(True)
            Call ShowData(Obj.Position)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
        Dim Cb As New MySqlCommandBuilder(Da)
        Dim Dr_Save As DataRow = Nothing

        If ChkBtn = "add" Then
            Sql = "select * from student where std_id='" & TxtId.Text & "'"
            Da.MissingSchemaAction = MissingSchemaAction.AddWithKey
            Da.SelectCommand = New MySqlCommand(Sql, Con)
            Try
                Da.Fill(DS, "chk")
                If DS.Tables("chk").Rows.Count > 0 Then
                    MessageBox.Show("รหัส " & TxtId.Text & " มีอยู่แล้ว", "รหัสซ้ำ")
                    DS.Tables("chk").Clear() : Exit Sub
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            Dr_Save = DS.Tables("std").NewRow
            With Dr_Save
                .BeginEdit()
                .Item("std_id") = TxtId.Text
                .Item("std_fname") = TxtFName.Text
                .Item("std_lname") = TxtLName.Text
                .EndEdit()
            End With
            DS.Tables("std").Rows.Add(Dr_Save)
            Da.InsertCommand = Cb.GetInsertCommand
        ElseIf ChkBtn = "edit" Then
            Dr_Save = DS.Tables("std").Rows.Find(TxtId.Text)
            With Dr_Save
                .BeginEdit()
                .Item("std_fname") = TxtFName.Text
                .Item("std_lname") = TxtLName.Text
                .EndEdit()
                Da.UpdateCommand = Cb.GetUpdateCommand
            End With
        End If
        Da.Update(DS.Tables("std"))
        DS.Tables("std").AcceptChanges()
        Call Btn_Status(True)
    End Sub

ผมใช้ฐานข้อมูลphpmyadminครับจะbugตรง Da.Update(DS.Tables("std")) จะขึ้นข้อความว่าConnection must be valid and open ซึ่งจะเป็นเฉพาะตอนที่เพิ่มแถวข้อมูลใหม่แต่ตอนแก้ไขจะไม่มีปัญหาอะไร



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-03-21 16:20:19 By : babyprogrammer View : 2127 Reply : 6
 

 

No. 1



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


โทษนะครับ ผมไม่ค่อยได้เข้า นานๆ มาที


ห้อง php กับ asp อยู่รวมกันแล้วเหรอครับ


ปล ไม่ได้หาเรื่องน่าาา






Date : 2010-03-21 23:57:27 By : kuznetsova
 


 

No. 2



โพสกระทู้ ( 373 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบแทนเจ้าของกระทู้
เนื่องจากเจ้าของกระทู้ใช้ vb.net connect mySQL จึงมา post ห้อง ASP ก็ได้ไม่ผิดหรอกครับ เพราะห้องนี้คนเยอะ มีพี่ๆ น้องๆ ตอบเยอะ

ตอบเจ้าของกระทู้ คุณยังไม่ได้ beginedit

.....BeginEdit()
Da.Update(DS.Tables("std"))<<< คุณจะ update มัน แต่ไม่ begin edit มัน
DS.Tables("std").AcceptChanges()
Date : 2010-03-22 10:10:15 By : numenoy
 

 

No. 3



โพสกระทู้ ( 482 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ผมขอบคุณพี่numenoy มากนะครับที่มาชี้แจงให้คุณ popเขาตาสว่างแต่ผมว่าถ้าเขาไม่อยากช่วยก็ไม่น่ามาพูดแบบนี้นะครับ

ที่พี่numenoyบอกให้ผม Beginedit ช่วงไหนครับพี่ numenoy
Date : 2010-03-22 10:19:58 By : babyprogrammer
 


 

No. 4



โพสกระทู้ ( 373 )
บทความ ( 0 )



สถานะออฟไลน์


Code
If ChkBtn = "add" Then Sql = "select * from student where std_id='" & TxtId.Text & "'" Da.MissingSchemaAction = MissingSchemaAction.AddWithKey Da.SelectCommand = New MySqlCommand(Sql, Con) Try Da.Fill(DS, "chk") If DS.Tables("chk").Rows.Count > 0 Then MessageBox.Show("รหัส " & TxtId.Text & " มีอยู่แล้ว", "รหัสซ้ำ") DS.Tables("chk").Clear() : Exit Sub End If Catch ex As Exception MessageBox.Show(ex.Message) End Try Dr_Save = DS.Tables("std").NewRow With Dr_Save .BeginEdit() .Item("std_id") = TxtId.Text .Item("std_fname") = TxtFName.Text .Item("std_lname") = TxtLName.Text .EndEdit() End With DS.Tables("std").Rows.Add(Dr_Save) Da.InsertCommand = Cb.GetInsertCommand ElseIf ChkBtn = "edit" Then Dr_Save = DS.Tables("std").Rows.Find(TxtId.Text) With Dr_Save .BeginEdit() .Item("std_fname") = TxtFName.Text .Item("std_lname") = TxtLName.Text .EndEdit() Da.UpdateCommand = Cb.GetUpdateCommand End With End If Da.Update(DS.Tables("std")) DS.Tables("std").AcceptChanges() Call Btn_Status(True)


เนื่องจาก คุณไปเรียกใช้ Da ใน If loop แล้วคุณ มา update มันข้างนอก If loop มันเลย error ว่า หา Da ไม่เจอ หรือไม่ได้ Init นั่นเอง
วิธีแก้ คุณต้อง ย้าย
Da.Update(DS.Tables("std"))
DS.Tables("std").AcceptChanges() เข้าไปใน If

หรือ ย้าย

Da.MissingSchemaAction = MissingSchemaAction.AddWithKey
Da.SelectCommand = New MySqlCommand(Sql, Con)

ออกจาก If เอาไปประกาศไว้ ต้นๆ ของ functions

ลองดูให้ครบครับ ผม copy ลวกๆ อาจไม่ครบ
Date : 2010-03-22 11:00:44 By : numenoy
 


 

No. 5

Guest


connection must be valid and open ลบไม่ได้ไม่รู้ไง เดงนี้ขื้นมา
Date : 2018-01-21 10:49:29 By : ongRee
 


 

No. 6



โพสกระทู้ ( 114 )
บทความ ( 3 )



สถานะออฟไลน์
Facebook

อาจจะเป็นเพราะฐานข้อมูลถูกเปิดการเชื่อมต่ออยู่ แนะนำว่าควรจะมี ซับ ที่ใช้เปิด/ปิด การเชื่อมต่อแบบอัตโนมัติไว้ เวลาจะคิวรี่ข้อมูล ก็สั่งให้มันปิดและเปิดการเชื่อมต่อใหม่ ในแต่ละครั้งที่คิวรี่ (ปกติจะทำการเปิดการเชื่อมต่อฐานข้อมูลก่อนแล้วคิวรี่ข้อมูล เมื่อคิวรี่เสร็จก็ต้องปิดการเชื่อมต่อ)

ตัวอย่างเช่น


Code (VB.NET)
Public data As String = "Server=127.0.0.1;Port=3306;Database= test;Uid=root;Pwd=1234;Convert Zero Datetime=True;"

Public ConnectionDB As New MySqlConnection(data)

 
''' <summary>
    ''' เปิด/ปิด การเชื่อมต่อฐานข้อมูล MySQL อัตโนมัติ 
    ''' </summary>
    ''' <remarks>Call open_connection()</remarks>
    Public Sub open_connection()
        Try
            If ConnectionDB.State = ConnectionState.Open Then ConnectionDB.Close()
            ConnectionDB.Open()
        Catch ex As Exception
            Throw New Exception("การเชื่อมต่อฐานข้อมูลใช้งานไม่ได้ เกิดข้อผิดพลาด : " & ex.Message)
        End Try
    End Sub


การใช้งาน

Code (VB.NET)
cmd = New MySqlCommand("SELECT prosection_id,prosection_name FROM product_section ORDER BY prosection_name;", ConnectionDB)
            Call open_connection()         '<<<<<<<   เรียกใช้ซับ open_connection() เพื่อเปิดการเชื่อมต่อฐานข้อมูล
            Dr = cmd.ExecuteReader
            If Dr.HasRows Then
                dt = New DataTable
                Me.cbbPWgetProSection.DisplayMember = "Name"
                Me.cbbPWgetProSection.ValueMember = "ID"

                dt.Columns.Add("Name", GetType(String))
                dt.Columns.Add("ID", GetType(String))
                While Dr.Read
                    dt.Rows.Add(Dr.Item("prosection_name"), Dr.Item("prosection_id"))
                End While
                Me.cbbPWgetProSection.DataSource = dt
            End If



ประวัติการแก้ไข
2018-01-23 07:49:42
Date : 2018-01-23 07:43:28 By : pakyaudio
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยดู Bug ให้หน่อยครับ จะขึ้นข้อความว่าConnection must be valid and open ซึ่งจะเป็นเฉพาะตอนที่เพิ่มแถวข้อมูลใหม่
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่