保存visual basic 2012 OOP方法的功能 [英] save function for visual basic 2012 OOP method

查看:146
本文介绍了保存visual basic 2012 OOP方法的功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,我正在申请使用visual studio 2012和SQL Server 2012注册。



我的Windows窗体有四个groupbox,每个都有自己的文本框,combobox和datetimepicker以及一个datagridview。



我想要的功能是:



如果我使用保存按钮将数据插入不同的组框中,datagridview将为每个组框显示不同的表格。



我的qustion是:



如何使我的保存按钮能够在一个数据网格视图中以一种形式从一个SQL数据库中保存来自不同表的不同数据?



这是我的编码:



hello, i'm currently making a application to register using visual studio 2012 and SQL server 2012.

my windows form has four groupbox each with it's own textbox,combobox,and datetimepicker and one datagridview.

the function i want is this:

if i insert the data in different groupbox using save button the datagridview will display different table for each groupbox.

my qustion is:

how do i make my save button able to save different data from different table from one SQL database in one datagridview in one form?

this is my coding:

form1
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ClassKoneksi.namadatabase = "KPIRWAN"
        ClassSiswa.namadatabase = "KPIRWAN"
        ClassOrangtua.namadatabase = "KPIRWAN"
        ClassWali.namadatabase = "KPIRWAN"
        datagridview()
    End Sub
    Sub datagridview()
        Dim sql As String
        Dim dsdata As New DataSet
        sql = "select*from siswa"
        sql = "select*from orangtua"
        sql = "select*from wali"
        dsdata = ClassSiswa.displayData(ClassSiswa.opencon, sql, "siswa")
        dsdata = ClassOrangtua.displayData(ClassOrangtua.opencon, sql, "orangtua")
        dsdata = ClassWali.displayData(ClassWali.opencon, sql, "wali")
        DataGridView1.DataSource = dsdata
        DataGridView1.DataMember = "siswa"
        DataGridView1.DataMember = "orangtua"
        DataGridView1.DataMember = "wali"
        DataGridView1.ReadOnly = True
        ClassKoneksi.closecon()
End Sub
    Private Sub btnKeluar_Click(sender As Object, e As EventArgs) Handles btnKeluar.Click
        Me.Close()
    End Sub

    Private Sub btnSimpan_Click(sender As Object, e As EventArgs) Handles btnSimpan.Click
        If Len(Trim(txt_nis.Text)) = 0 Or Len(Trim(txt_nisn.Text)) = 0 Or Len(Trim(txt_namasiswa.Text)) = 0 Or Len(Trim(cmb_kelaminsiswa.Text)) = 0 Or Len(Trim(txt_kotalahir.Text)) = 0 Or Len(Trim(DTP_siswa.Value)) = 0 Or Len(Trim(cmb_agamasiswa.Text)) = 0 Or Len(Trim(txt_beratsiswa.Text)) = 0 Or Len(Trim(txt_tinggi_badan.Text)) Then
            MsgBox("Data Belum Lengkap")
        ElseIf Len(Trim(cmb_ket_ayah.Text)) = 0 Or Len(Trim(txt_namaayah.Text)) = 0 Or Len(Trim(DTP_ayah.Text)) = 0 Or Len(Trim(txt_kotalahirayah.Text)) = 0 Or Len(Trim(cmb_agamaayah.Text)) = 0 Or Len(Trim(txt_ijazahayah.Text)) = 0 Or Len(Trim(txt_pekerjaanayah.Text)) = 0 Or Len(Trim(txt_pendapatanayah.Text)) = 0 Or Len(Trim(txt_alamatayah.Text)) = 0 Then
            MsgBox("Data Belum Lengkap")
        ElseIf Len(Trim(cmb_ket_ibu.Text)) = 0 Or Len(Trim(txt_namaibu.Text)) = 0 Or Len(Trim(DTP_ibu.Text)) = 0 Or Len(Trim(txt_kotalahiribu.Text)) = 0 Or Len(Trim(cmb_agamaibu.Text)) = 0 Or Len(Trim(txt_ijazahibu.Text)) = 0 Or Len(Trim(txt_pekerjaanibu.Text)) = 0 Or Len(Trim(txt_pendapatanibu.Text)) = 0 Or Len(Trim(txt_alamatibu.Text)) Then
            MsgBox("Data Belum Lengkap")
        ElseIf Len(Trim(cmb_ket_wali.Text)) = 0 Or Len(Trim(txt_namawali.Text)) = 0 Or Len(Trim(cmb_kelaminwali.Text)) = 0 Or Len(Trim(DTP_wali.Text)) = 0 Or Len(Trim(txt_kotalahirwali.Text)) = 0 Or Len(Trim(cmb_agamawali.Text)) = 0 Or Len(Trim(txt_ijazahwali.Text)) = 0 Or Len(Trim(txt_pekerjaanwali.Text)) = 0 Or Len(Trim(txt_pendapatanwali.Text)) = 0 Or Len(Trim(txt_alamatwali.Text)) = 0 Then
            MsgBox("Data Belum Lengkap")
            Exit Sub
        End If
        ClassSiswa.Nis = txt_nis.Text
        ClassSiswa.Nisn = txt_nisn.Text
        ClassSiswa.Nama_Siswa = txt_namasiswa.Text
        ClassSiswa.Jenis_Kelamin = cmb_kelaminsiswa.Text
        ClassSiswa.Kota_Lahir = txt_kotalahir.Text
        ClassSiswa.Tanggal_Lahir = DTP_siswa.Value
        ClassSiswa.Agama = cmb_agamasiswa.Text
        ClassSiswa.Berat_Badan = txt_beratsiswa.Text
        ClassSiswa.Tinggi_Badan = txt_tinggi_badan.Text
        ClassSiswa.RekamData(ClassSiswa.opencon)
        MsgBox("Data siswa Berhasil Disimpan")
        datagridview()
        Call kosongkan()

        ClassOrangtua.Ket_Ayah = cmb_ket_ayah.Text
        ClassOrangtua.Nama_Ayah = txt_namaayah.Text
        ClassOrangtua.Tanggal_Lahir_Ayah = DTP_ayah.Value
        ClassOrangtua.Kota_Ayah = txt_kotalahirayah.Text
        ClassOrangtua.Agama_Ayah = cmb_agamaayah.Text
        ClassOrangtua.Ijazah_Ayah = txt_ijazahayah.Text
        ClassOrangtua.Pekerjaan_Ayah = txt_pekerjaanayah.Text
        ClassOrangtua.Pendapatan_Ayah = txt_pendapatanayah.Text
        ClassOrangtua.Alamat_Ayah = txt_alamatayah.Text
        ClassOrangtua.RekamData(ClassOrangtua.opencon)
        MsgBox("Data ayah Berhasil Disimpan")
        datagridview()
        Call kosongkan()

        ClassOrangtua.Ket_Ibu = cmb_ket_ibu.Text
        ClassOrangtua.Nama_Ibu = txt_namaibu.Text
        ClassOrangtua.Tanggal_Lahir_Ibu = DTP_ibu.Value
        ClassOrangtua.Kota_Ibu = txt_kotalahiribu.Text
        ClassOrangtua.Agama_Ibu = cmb_agamaibu.Text
        ClassOrangtua.Ijazah_Ibu = txt_ijazahibu.Text
        ClassOrangtua.Pekerjaan_Ibu = txt_pekerjaanibu.Text
        ClassOrangtua.Pendapatan_Ibu
        ClassOrangtua.Alamat_Ibu = txt_alamatibu.Text
        ClassOrangtua.RekamData(ClassOrangtua.opencon)
        MsgBox("Data ibu Berhasil Disimpan")
        datagridview()
        Call kosongkan()

        ClassWali.Ket_Wali = cmb_ket_wali.Text
        ClassWali.Nama_Wali = txt_namawali.Text
        ClassWali.Kelamin_Wali = cmb_kelaminwali.Text
        ClassWali.Tanggal_Lahir_Wali = DTP_wali.Value
        ClassWali.Kota_Wali = txt_kotalahirwali.Text
        ClassWali.Agama_Wali = cmb_agamawali.Text
        ClassWali.Ijazah_Wali = txt_ijazahwali.Text
        ClassWali.Pekerjaan_Wali = txt_pekerjaanwali.Text
        ClassWali.Pendapatan_Wali = txt_pendapatanwali.Text
        ClassWali.Alamat_Wali = txt_alamatwali.Text
        ClassWali.RekamData(ClassWali.opencon)
        MsgBox("Data wali Berhasil Disimpan")
        datagridview()
        Call kosongkan()

    End Sub







class orangtua
Public Shared Sub RekamData(ByVal _Cn As SqlClient.SqlConnection)
        Dim sql As SqlClient.SqlCommand
        sql = New SqlClient.SqlCommand
        sql.Connection = _Cn
        sql.CommandType = CommandType.Text
        sql.CommandText = "Insert into orangtua values(','" & Ket_Ayah & "','" & Nama_Ayah & "','" & Tanggal_Lahir_Ayah & "','" & Kota_Ayah & "','" & Agama_Ayah & "','" & Ijazah_Ayah & "','" & Pekerjaan_Ayah & "','" & Pendapatan_Ayah & "','" & Alamat_Ayah & "','" & Ket_Ibu & "','" & Nama_Ibu & "','" & Tanggal_Lahir_Ibu & "','" & Kota_Ibu & "','" & Agama_Ibu & "','" & Ijazah_Ibu & "','" & Pekerjaan_Ibu & "','" & Pendapatan_Ibu & "','" & Alamat_Ibu & "')"
        sql.ExecuteNonQuery()
    End Sub
    Public Shared Function displayData(ByVal _cn As SqlClient.SqlConnection, ByVal _sql As String, ByVal _orangtua As String) As DataSet
        Dim _da As New SqlClient.SqlDataAdapter
        Dim _dsdata As New DataSet
        Dim sql As New SqlClient.SqlCommand
        _dsdata.Clear()
        sql.Connection = _cn
        sql.CommandType = CommandType.Text
        sql.CommandText = _sql
        _da.SelectCommand = sql
        _da.Fill(_dsdata, _orangtua)
        Return _dsdata
    End Function
End Class







classsiswa
Public Shared Sub RekamData(ByVal _Cn As SqlClient.SqlConnection)
        Dim sql As SqlClient.SqlCommand
        sql = New SqlClient.SqlCommand
        sql.Connection = _Cn
        sql.CommandType = CommandType.Text
        sql.CommandText = "Insert into siswa values('" & Nis & "','" & Nisn & "','" & Nama_Siswa & "','" & Jenis_Kelamin & "','" & Kota_Lahir & "','" & Tanggal_Lahir & "','" & Agama & "','" & Berat_Badan & "','" & Tinggi_Badan & "')"
        sql.ExecuteNonQuery()
    End Sub

    Public Shared Function displayData(ByVal _cn As SqlClient.SqlConnection, ByVal _sql As String, ByVal _siswa As String) As DataSet
        Dim _da As New SqlClient.SqlDataAdapter
        Dim _dsdata As New DataSet
        Dim sql As New SqlClient.SqlCommand
        _dsdata.Clear()
        sql.Connection = _cn
        sql.CommandType = CommandType.Text
        sql.CommandText = _sql
        _da.SelectCommand = sql
        _da.Fill(_dsdata, _siswa)
        Return _dsdata
    End Function







classwali
Public Shared Sub RekamData(ByVal _Cn As SqlClient.SqlConnection)
        Dim sql As SqlClient.SqlCommand
        sql = New SqlClient.SqlCommand
        sql.Connection = _Cn
        sql.CommandType = CommandType.Text
        sql.CommandText = "Insert into wali values('" & Ket_Wali & "','" & Nama_Wali & "','" & Kelamin_Wali & "','" & Tanggal_Lahir_Wali & "','" & Kota_Wali & "','" & Agama_Wali & "','" & Ijazah_Wali & "','" & Pekerjaan_Wali & "','" & Pendapatan_Wali & "','" & Alamat_Wali & "')"
        sql.ExecuteNonQuery()
    End Sub
    Public Shared Function displayData(ByVal _cn As SqlClient.SqlConnection, ByVal _sql As String, ByVal _wali As String) As DataSet
        Dim _da As New SqlClient.SqlDataAdapter
        Dim _dsdata As New DataSet
        Dim sql As New SqlClient.SqlCommand
        _dsdata.Clear()
        sql.Connection = _cn
        sql.CommandType = CommandType.Text
        sql.CommandText = _sql
        _da.SelectCommand = sql
        _da.Fill(_dsdata, _wali)
        Return _dsdata
    End Function
End Class





SQL查询:



SQL query:

Create Database KPIRWAN
use KPIRWAN

Create Table siswa 
(
Nis int primary key,
Nisn int,
Nama_Siswa varchar(40),
Jenis_Kelamin varchar (10),
Kota_Lahir varchar (10),
Tanggal_Lahir date,
Agama varchar (10),
Berat_Badan int,
Tinggi_Badan int,
)

create table orangtua
(
Ket_Ayah varchar(40),
Nama_Ayah varchar(40),
Tanggal_Lahir_Ayah date,
Kota_Ayah varchar(40),
Agama_Ayah varchar(40),
Ijazah_Ayah varchar(40),
Pekerjaan_Ayah varchar(40),
Pendapatan_Ayah int,
Alamat_Ayah varchar(40),
Ket_Ibu varchar(40),
Nama_Ibu varchar(40),
Tanggal_Lahir_Ibu date,
Kota_Ibu varchar(40),
Agama_Ibu varchar(40),
Ijazah_Ibu varchar(40),
Pekerjaan_Ibu varchar(40),
Pendapatan_Ibu int,
Alamat_Ibu varchar(40),
)

create table wali
(
Ket_Wali varchar(40),
Nama_Wali varchar(40),
Kelamin_Wali varchar (10),
Tanggal_Lahir_Wali date,
Kota_Wali varchar(40),
Agama_Wali varchar(40),
Ijazah_Wali varchar(40),
Pekerjaan_Wali varchar(40),
Pendapatan_Wali int,
Alamat_Wali varchar(40),
)

推荐答案

对不起,但你把所有东西都混了!



1。不要对仅与名称不同的类使用相同的方法!

iswa wali orn​​agtua 类使用相同的方法 RekamData DisplayData 。这不是有效的编程习惯。而不是那样,使用一个基类和几个可以从基类继承的派生类。

参见:

Visual Basic中的继承 [ ^ ]

Microsoft .NET中基类的继承 [ ^ ]

基于继承的多态性 [ ^ ]

何时使用继承 [ ^ ]



似乎你的问题是类似于你想要使用不同颜色的笔的情况:一旦你需要蓝色,另一个 - 红色。

参见:

Sorry, but you mixed everything!

1. Do not use the same methods for the classes which differs only with names!
iswa, wali and ornagtua classes are using the same methods RekamData and DisplayData. It's not valid programming practice. Instead of that, use one base class and few derived classes which can inherit from base class.
See:
Inheritance in Visual Basic[^]
Inheritance from a Base Class in Microsoft .NET[^]
Inheritance-Based Polymorphism[^]
When to Use Inheritance[^]

Seems your problem is similar to situation when you want to use different color of pen: once you need blue color, another - the red one.
See:
Public Class Pen
    Private sColor As String = String.Empty 
    
	'default constructor
	Public Sub New()
		sColor = "Blue" 'default color for Pen
	End Sub
	
	'
    Public Sub New(ByVal newColor As String)
        sColor = newColor
    End Sub

    Public Property Color As String
		Get
			Return sColor
		End Get
		Set (value As String)
			sColor = value
		End Set
	End Property
	
End Class





用法:



Usage:

Console.WriteLine("Welcome! What color of pen do you want to use?")
Dim col As String
Do
    col = Console.ReadLine()
Loop While col Is Nothing

Dim mypen As Pen = New Pen(col)
Console.WriteLine("Pen's color is: {0}", mypen.Color)





类似的你必须创建自己的课程。

如需了解更多信息,请参阅:

9.6实例和共享变量 [ ^ ]

使用构造函数和析构函数 [ ^ ]



2。使用数据库时使用数据访问层

请参阅:

教程1:创建数据访问层 [ ^ ]

演练:在ASP.NET中创建数据访问和业务逻辑层 [ ^ ]



3。使用存储过程来避免 Sql Injection [ ^ ]攻击

请参阅:

停止SQL注入攻击在他们阻止你之前 [ ^ ]

SQL注入及其如何避免 [ ^ ]

如何:使用带参数的存储过程 [ ^ ]

演练:仅使用存储过程(Visual Basic) [ ^ ]



试试吧!祝你好运!



Analogically you have to create your own class.
For further information, please see this:
9.6 Instance and Shared Variables[^]
Using Constructors and Destructors[^]

2. Use Data Access Layer when you work with databases
See:
Tutorial 1: Creating a Data Access Layer[^]
Walkthrough: Creating the Data Access and Business Logic Layers in ASP.NET[^]

3. Use Stored Procedures to avoid Sql Injection[^] attacks
See:
Stop SQL Injection Attacks Before They Stop You[^]
SQL Injection and how to avoid it[^]
How to: Use Stored Procedures that Take Parameters[^]
Walkthrough: Using Only Stored Procedures (Visual Basic)[^]

Try! Good luck!


这篇关于保存visual basic 2012 OOP方法的功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆