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

Registered : 109,038

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


 

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

 
Topic : 040626



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

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

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



Code (VB.NET)
01.Imports System.Data
02.Imports MySql.Data.MySqlClient
03.Public Class Form1
04.    Dim StrCon = "Server=127.0.0.1;user id=root;password=1234;Database=convb"
05.    Dim Con As New MySqlConnection(StrCon)
06.    Dim Da As New MySqlDataAdapter
07.    Dim DS As New DataSet
08.  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
09.        Sql = "select * from student"
10.        Da.MissingSchemaAction = MissingSchemaAction.AddWithKey
11.        Da.SelectCommand = New MySqlCommand(Sql, Con)
12.        Try
13.            Da.Fill(DS, "std")
14.            GridShow.DataSource = DS.Tables("std")
15.            Obj = Me.BindingContext(DS.Tables("std"))
16.            Call Btn_Status(True)
17.            Call ShowData(Obj.Position)
18.        Catch ex As Exception
19.            MessageBox.Show(ex.Message)
20.        End Try
21.    End Sub
22.Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
23.        Dim Cb As New MySqlCommandBuilder(Da)
24.        Dim Dr_Save As DataRow = Nothing
25. 
26.        If ChkBtn = "add" Then
27.            Sql = "select * from student where std_id='" & TxtId.Text & "'"
28.            Da.MissingSchemaAction = MissingSchemaAction.AddWithKey
29.            Da.SelectCommand = New MySqlCommand(Sql, Con)
30.            Try
31.                Da.Fill(DS, "chk")
32.                If DS.Tables("chk").Rows.Count > 0 Then
33.                    MessageBox.Show("รหัส " & TxtId.Text & " มีอยู่แล้ว", "รหัสซ้ำ")
34.                    DS.Tables("chk").Clear() : Exit Sub
35.                End If
36.            Catch ex As Exception
37.                MessageBox.Show(ex.Message)
38.            End Try
39.            Dr_Save = DS.Tables("std").NewRow
40.            With Dr_Save
41.                .BeginEdit()
42.                .Item("std_id") = TxtId.Text
43.                .Item("std_fname") = TxtFName.Text
44.                .Item("std_lname") = TxtLName.Text
45.                .EndEdit()
46.            End With
47.            DS.Tables("std").Rows.Add(Dr_Save)
48.            Da.InsertCommand = Cb.GetInsertCommand
49.        ElseIf ChkBtn = "edit" Then
50.            Dr_Save = DS.Tables("std").Rows.Find(TxtId.Text)
51.            With Dr_Save
52.                .BeginEdit()
53.                .Item("std_fname") = TxtFName.Text
54.                .Item("std_lname") = TxtLName.Text
55.                .EndEdit()
56.                Da.UpdateCommand = Cb.GetUpdateCommand
57.            End With
58.        End If
59.        Da.Update(DS.Tables("std"))
60.        DS.Tables("std").AcceptChanges()
61.        Call Btn_Status(True)
62.    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 : 3770 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



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



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

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

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


Code (VB.NET)
01.Public data As String = "Server=127.0.0.1;Port=3306;Database= test;Uid=root;Pwd=1234;Convert Zero Datetime=True;"
02. 
03.Public ConnectionDB As New MySqlConnection(data)
04. 
05.  
06.''' <summary>
07.    ''' เปิด/ปิด การเชื่อมต่อฐานข้อมูล MySQL อัตโนมัติ
08.    ''' </summary>
09.    ''' <remarks>Call open_connection()</remarks>
10.    Public Sub open_connection()
11.        Try
12.            If ConnectionDB.State = ConnectionState.Open Then ConnectionDB.Close()
13.            ConnectionDB.Open()
14.        Catch ex As Exception
15.            Throw New Exception("การเชื่อมต่อฐานข้อมูลใช้งานไม่ได้ เกิดข้อผิดพลาด : " & ex.Message)
16.        End Try
17.    End Sub


การใช้งาน

Code (VB.NET)
01.cmd = New MySqlCommand("SELECT prosection_id,prosection_name FROM product_section ORDER BY prosection_name;", ConnectionDB)
02.            Call open_connection()         '<<<<<<<   เรียกใช้ซับ open_connection() เพื่อเปิดการเชื่อมต่อฐานข้อมูล
03.            Dr = cmd.ExecuteReader
04.            If Dr.HasRows Then
05.                dt = New DataTable
06.                Me.cbbPWgetProSection.DisplayMember = "Name"
07.                Me.cbbPWgetProSection.ValueMember = "ID"
08. 
09.                dt.Columns.Add("Name", GetType(String))
10.                dt.Columns.Add("ID", GetType(String))
11.                While Dr.Read
12.                    dt.Rows.Add(Dr.Item("prosection_name"), Dr.Item("prosection_id"))
13.                End While
14.                Me.cbbPWgetProSection.DataSource = dt
15.            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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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