重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
以下是完整模塊
創(chuàng)新互聯(lián)從2013年成立,先為嶺東等服務(wù)建站,嶺東等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為嶺東企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
Imports?System.Data
Imports?System.IO
Imports?System.Data.OleDb
Module?Module1
Public?cn?As?New?OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=C:\ACCESS數(shù)據(jù)庫(kù).mdb")?'定義連接---這里請(qǐng)更改為實(shí)際數(shù)據(jù)庫(kù)路徑及名稱
Public?DataBaseRST?As?Integer?'用來(lái)返回?cái)?shù)據(jù)庫(kù)執(zhí)行結(jié)果
Public?Function?DataModify(ByVal?str?As?String)?As?Boolean?'進(jìn)行數(shù)據(jù)庫(kù)修改操作函數(shù)
Dim?cmdinsert?As?New?OleDbCommand
Try
cmdinsert.CommandText?=?str
cmdinsert.Connection?=?cn
If?cn.State?=?ConnectionState.Closed?Then?cn.Open()
DataBaseRST?=?cmdinsert.ExecuteNonQuery()?'用來(lái)返回執(zhí)行的結(jié)果
cn.Close()
Return?True
Catch?ex?As?Exception
MessageBox.Show(Err.Description,?"Error",?MessageBoxButtons.OK,?MessageBoxIcon.Error)
Return?False
End?Try
End?Function
Public?Function?Search(ByVal?str?As?String,?ByVal?DGV?As?DataGridView)?As?Boolean?'查詢?str---查詢命令,DGV---DataGridView,用來(lái)顯示數(shù)據(jù)的控件
Dim?tb?As?New?DataTable
Try
Dim?ap?As?New?OleDb.OleDbDataAdapter(str,?cn)
ap.Fill(tb)
DGV.DataSource?=?tb
Return?True
Catch?ex?As?Exception
MessageBox.Show(Err.Description,?"Error",?MessageBoxButtons.OK,?MessageBoxIcon.Error)
Return?False
End?Try
End?Function
End?Module
'以下是調(diào)用方法
DataModify("?insert?into?aa?values?('1','2')")'-------這里是數(shù)據(jù)庫(kù)更新操作
Search("select?bb?from?aa",DataGridView1)'-----------這里是數(shù)據(jù)表查詢操作
1、首先,你得做一個(gè)oledbconnection對(duì)象,這個(gè)對(duì)象有個(gè)連接字符串的屬性,你需要設(shè)置
2、做一個(gè)oledbcommand對(duì)象,這個(gè)對(duì)象有個(gè)操作字符串(SQL語(yǔ)句)需要設(shè)置
3、打開(kāi)oledbconnection對(duì)象
4、執(zhí)行oledbcommand對(duì)象
5、關(guān)閉oledbconnection對(duì)象
程序結(jié)束,希望對(duì)你有幫助
參考一下下面這段代碼就可以了。
Imports System.Data
'引入數(shù)據(jù)庫(kù)操作類(lèi)命名空間
Imports System.Data.OleDb
'引入ADO.NET操作命名空間
Public Class FrmModifystInfo
Inherits System.Windows.Forms.Form
Public ADOcmd As OleDbDataAdapter
Public ds As DataSet = New DataSet()
'建立DataSet對(duì)象
Public mytable As Data.DataTable
'建立表單對(duì)象
Public myrow As Data.DataRow
'建立數(shù)據(jù)行對(duì)象
Public rownumber As Integer
'定義一個(gè)整型變量來(lái)存放當(dāng)前行數(shù)
Public SearchSQL As String
Public cmd As OleDbCommandBuilder
'======================================================
#Region " Windows 窗體設(shè)計(jì)器生成的代碼 "
#End Region
'======================================================
Private Sub FrmModifystInfo_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'窗體的載入
TxtSID.Enabled = False
TxtName.Enabled = False
ComboSex.Enabled = False
TxtBornDate.Enabled = False
TxtClassno.Enabled = False
TxtRuDate.Enabled = False
TxtTel.Enabled = False
TxtAddress.Enabled = False
TxtComment.Enabled = False '設(shè)置信息為只讀
Dim tablename As String = "student_Info "
SearchSQL = "select * from student_Info "
ExecuteSQL(SearchSQL, tablename) '打開(kāi)數(shù)據(jù)庫(kù)
ShowData() '顯示記錄
End Sub
Private Sub ShowData()
'在窗口中的textbox中顯示數(shù)據(jù)
myrow = mytable.Rows.Item(rownumber)
TxtSID.Text = myrow.Item(0).ToString
TxtName.Text = myrow.Item(1).ToString
ComboSex.Text = myrow.Item(2).ToString
TxtBornDate.Text = Format(myrow.Item(3), "yyyy-MM-dd ")
TxtClassno.Text = myrow.Item(4).ToString
TxtTel.Text = myrow.Item(5).ToString
TxtRuDate.Text = Format(CDate(myrow.Item(6)), "yyyy-MM-dd ")
TxtAddress.Text = myrow.Item(7).ToString
TxtComment.Text = myrow.Item(8).ToString
End Sub
Private Sub BtFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtFirst.Click
'指向第一條數(shù)據(jù)
rownumber = 0
ShowData()
End Sub
Private Sub BtPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtPrev.Click
'指向上一條數(shù)據(jù)
BtNext.Enabled = True
rownumber = rownumber - 1
If rownumber 0 Then
rownumber = 0 '如果到達(dá)記錄的首部,行號(hào)設(shè)為零
BtPrev.Enabled = False
End If
ShowData()
End Sub
Private Sub BtNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtNext.Click
'指向上一條數(shù)據(jù)
BtPrev.Enabled = True
rownumber = rownumber + 1
If rownumber mytable.Rows.Count - 1 Then
rownumber = mytable.Rows.Count - 1 '判斷是否到達(dá)最后一條數(shù)據(jù)
BtNext.Enabled = False
End If
ShowData()
End Sub
Private Sub BtLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtLast.Click
'指向最后一條數(shù)據(jù)
rownumber = mytable.Rows.Count - 1
ShowData()
End Sub
Private Sub BtDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtDelete.Click
mytable.Rows.Item(rownumber).Delete() '刪除記錄
If MsgBox( "確定要?jiǎng)h除改記錄嗎? ", MsgBoxStyle.OKCancel + vbExclamation, "警告 ") = MsgBoxResult.OK Then
cmd = New OleDbCommandBuilder(ADOcmd)
'使用自動(dòng)生成的SQL語(yǔ)句
ADOcmd.Update(ds, "student_Info ")
BtNext.PerformClick()
End If
End Sub
Private Sub BtModify_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtModify.Click
TxtSID.Enabled = False '關(guān)鍵字段只讀
TxtName.Enabled = True '可讀寫(xiě)
ComboSex.Enabled = True
TxtBornDate.Enabled = True
TxtClassno.Enabled = True
TxtRuDate.Enabled = True
TxtTel.Enabled = True
TxtAddress.Enabled = True
TxtComment.Enabled = True
End Sub
Private Sub BtUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtUpdate.Click
If Not Testtxt(TxtName.Text) Then
MsgBox( "請(qǐng)輸入姓名! ", vbOKOnly + vbExclamation, "警告 ")
TxtName.Focus()
Exit Sub
End If
If Not Testtxt(ComboSex.Text) Then
MsgBox( "請(qǐng)選擇性別! ", vbOKOnly + vbExclamation, "警告 ")
ComboSex.Focus()
Exit Sub
End If
If Not Testtxt(TxtClassno.Text) Then
MsgBox( "請(qǐng)選擇班號(hào)! ", vbOKOnly + vbExclamation, "警告 ")
TxtClassno.Focus()
Exit Sub
End If
If Not Testtxt(TxtTel.Text) Then
MsgBox( "請(qǐng)輸入聯(lián)系電話! ", vbOKOnly + vbExclamation, "警告 ")
TxtTel.Focus()
Exit Sub
End If
If Not Testtxt(TxtAddress.Text) Then
MsgBox( "請(qǐng)輸入家庭住址! ", vbOKOnly + vbExclamation, "警告 ")
TxtAddress.Focus()
Exit Sub
End If
If Not IsNumeric(Trim(TxtSID.Text)) Then
MsgBox( "請(qǐng)輸入數(shù)字學(xué)號(hào)! ", vbOKOnly + vbExclamation, "警告 ")
Exit Sub
TxtSID.Focus()
End If
If Not IsDate(TxtBornDate.Text) Then
MsgBox( "出生時(shí)間應(yīng)輸入日期格式(yyyy-mm-dd)! ", vbOKOnly + vbExclamation, "警告 ")
Exit Sub
TxtBornDate.Focus()
End If
If Not IsDate(TxtRuDate.Text) Then
MsgBox( "入校時(shí)間應(yīng)輸入日期格式(yyyy-mm-dd)! ", vbOKOnly + vbExclamation, "警告 ")
TxtRuDate.Focus()
Exit Sub
End If
myrow.Item(0) = Trim(TxtSID.Text)
myrow.Item(1) = Trim(TxtName.Text)
myrow.Item(2) = Trim(ComboSex.Text)
myrow.Item(3) = Trim(TxtBornDate.Text)
myrow.Item(4) = Trim(TxtClassno.Text)
myrow.Item(5) = Trim(TxtTel.Text)
myrow.Item(6) = Trim(TxtRuDate.Text)
myrow.Item(7) = Trim(TxtAddress.Text)
myrow.Item(8) = Trim(TxtComment.Text)
mytable.GetChanges()
cmd = New OleDbCommandBuilder(ADOcmd)
'使用自動(dòng)生成的SQL語(yǔ)句
ADOcmd.Update(ds, "student_Info ")
'對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新
MsgBox( "修改學(xué)籍信息成功! ", vbOKOnly + vbExclamation, "警告 ")
TxtName.Enabled = False
ComboSex.Enabled = False
TxtBornDate.Enabled = False
TxtClassno.Enabled = False
TxtRuDate.Enabled = False
TxtTel.Enabled = False
TxtAddress.Enabled = False
TxtComment.Enabled = False '重新設(shè)置信息為只讀
End Sub
Private Sub BtCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtCancel.Click
TxtSID.Enabled = False
TxtName.Enabled = False
ComboSex.Enabled = False
TxtBornDate.Enabled = False
TxtClassno.Enabled = False
TxtRuDate.Enabled = False
TxtTel.Enabled = False
TxtAddress.Enabled = False
TxtComment.Enabled = False
End Sub
Public Function ExecuteSQL(ByVal SQL As String, ByVal table As String)
Try
'建立ADODataSetCommand對(duì)象
'數(shù)據(jù)庫(kù)查詢函數(shù)
ADOcmd = New OleDbDataAdapter(SQL, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\student.mdb ")
'建立ADODataSetCommand對(duì)象
ADOcmd.Fill(ds, table) '取得表單
mytable = ds.Tables.Item(0) '取得名為table的表
rownumber = 0 '設(shè)置為第一行
myrow = mytable.Rows.Item(rownumber)
'取得第一行數(shù)據(jù)
Catch
MsgBox(Err.Description)
End Try
End Function
End Class
引用 Microsoft ActiveX Data Objects 2.8 Library
或者加入microsoft ado data control
定義數(shù)據(jù)庫(kù)連接
Dim Cnn As New ADODB.Connection
定義操作記錄
Dim Res As New ADODB.Recordset
開(kāi)始使用
If Res.State = 1 Then Res.Close
Res.CursorLocation = adUseClient
Res.Open "SELECT * From 發(fā)票表", Cnn, adOpenDynamic, adLockReadOnly
刪除用res.Delete
添加用res.AddNew
res.Fields("序號(hào)") = Trim(Res.Fields("序號(hào)"))
...
res.Update
更新用Res.Update "序號(hào)", 111
列:
'寫(xiě)入產(chǎn)品信息
Sub WriteFP()
'On Error Resume Next
Dim SyBaseRes As New ADODB.Recordset
PB.value = 0
Res.Open "SELECT Count(*) From ICSaleEntry INNER JOIN t_Item ON ICSaleEntry.FItemID = t_Item.FItemID INNER JOIN t_MeasureUnit ON ICSaleEntry.FUnitID = t_MeasureUnit.FMeasureUnitID", SQLServer, adOpenDynamic, adLockReadOnly
Text2.Text = "當(dāng)前共 " Val(Res.Fields(0)) "條數(shù)據(jù)"
PB.Max = Val(Res.Fields(0))
If Res.State = 1 Then Res.Close
Res.Open "SELECT ICSaleEntry.FDetailID AS 序號(hào),ICSaleEntry.FInterID AS 物料編號(hào), t_Item.FName AS 產(chǎn)品名稱,ICSaleEntry.FAuxPrice AS 單價(jià), ICSaleEntry.FAuxQty AS 數(shù)量,ICSaleEntry.FAmount AS 原幣, ICSaleEntry.FStdAmount AS 本幣,t_MeasureUnit.FName AS 單位 FROM ICSaleEntry INNER JOIN t_Item ON ICSaleEntry.FItemID = t_Item.FItemID INNER JOIN t_MeasureUnit ON ICSaleEntry.FUnitID = t_MeasureUnit.FMeasureUnitID", SQLServer, adOpenDynamic, adLockReadOnly
Do While Not Res.EOF
If SyBaseRes.State = 1 Then SyBaseRes.Close
SyBaseRes.Open "select * from 物料表 where 序號(hào)='" Res.Fields("序號(hào)") "'", Cnn, adOpenDynamic, adLockOptimistic
If SyBaseRes.EOF Then
Text2.Text = Text2.Text + vbCrLf + "正在添加: " Trim(Res.Fields("序號(hào)"))
SyBaseRes.AddNew
SyBaseRes.Fields("序號(hào)") = Trim(Res.Fields("序號(hào)"))
SyBaseRes.Fields("產(chǎn)品編號(hào)") = Trim(Res.Fields("物料編號(hào)"))
SyBaseRes.Fields("產(chǎn)品名稱") = Trim(Res.Fields("產(chǎn)品名稱"))
SyBaseRes.Fields("單價(jià)") = Trim(Res.Fields("單價(jià)"))
SyBaseRes.Fields("數(shù)量") = Trim(Res.Fields("數(shù)量"))
SyBaseRes.Fields("原幣") = Trim(Res.Fields("原幣"))
SyBaseRes.Fields("本幣") = Trim(Res.Fields("本幣"))
SyBaseRes.Fields("單位") = Trim(Res.Fields("單位"))
SyBaseRes.Fields("數(shù)據(jù)庫(kù)名") = Trim(Text1.Text)
SyBaseRes.Update
Else
Text2.Text = Text2.Text + vbCrLf + "正在更新: " Trim(Res.Fields("序號(hào)"))
SyBaseRes.Update "序號(hào)", Trim(Res.Fields("序號(hào)"))
SyBaseRes.Update "產(chǎn)品編號(hào)", Trim(Res.Fields("物料編號(hào)"))
SyBaseRes.Update "產(chǎn)品名稱", Trim(Res.Fields("產(chǎn)品名稱"))
SyBaseRes.Update "單價(jià)", Trim(Res.Fields("單價(jià)"))
SyBaseRes.Update "數(shù)量", Trim(Res.Fields("數(shù)量"))
SyBaseRes.Update "原幣", Trim(Res.Fields("原幣"))
SyBaseRes.Update "本幣", Trim(Res.Fields("本幣"))
SyBaseRes.Update "單位", Trim(Res.Fields("單位"))
SyBaseRes.Update "數(shù)據(jù)庫(kù)名", Trim(Text1.Text)
End If
PB.value = PB.value + 1
Res.MoveNext
DoEvents
Loop
If SyBaseRes.State = 1 Then SyBaseRes.Close
Set SyBaseRes = Nothing
End Sub
網(wǎng)絡(luò)希望不要用ACCESS用ASA(就是sybase那個(gè)太強(qiáng)了)
在此本人使用ADO對(duì)象訪問(wèn)ACCESS數(shù)據(jù)庫(kù),但ADO對(duì)象在使用前你先要進(jìn)行添加,啟動(dòng)VB6后,單擊菜單“工程-引用”,打開(kāi)引用對(duì)話框,選擇“Microsoft ActiveX Data Objects 2.0 Library”,將其勾選,(以2.0版本為例,實(shí)際可以選擇系統(tǒng)中的最高版本如本人的就是2.6版本),然后在當(dāng)前目錄下建立一個(gè)名為“學(xué)生”的ACCESS數(shù)據(jù)庫(kù),其中表名為“表”,字段共有:學(xué)號(hào),姓名,年齡,性別四個(gè)字段,接下來(lái)就是設(shè)計(jì)界面了(自己設(shè)計(jì))
現(xiàn)在介紹如何使用代碼訪問(wèn)ACCESS數(shù)據(jù)庫(kù):
在代碼窗口中編寫(xiě)一個(gè)返回字符型的函數(shù)
Function Connection() As String
'數(shù)據(jù)庫(kù)的連接設(shè)置配置
Connection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" App.Path + "\學(xué)生.mdb"
End Function
該函數(shù)用于連接數(shù)據(jù)庫(kù)用
Private Form_Load()
Dim cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
cnn.Open Connection
Set Rst = New ADODB.Recordset
Rst.Open "select * from 表", cnn, adOpenKeyset, adLockOptimistic
End Sub
注:
Dim cnn As New ADODB.Connection創(chuàng)建一個(gè)ADO數(shù)據(jù)庫(kù)連接對(duì)象
Dim Rst As New ADODB.Recordset為創(chuàng)建一個(gè)ADO數(shù)據(jù)庫(kù)記錄對(duì)象
select * from 表 是SQL查詢語(yǔ)言,這里為數(shù)據(jù)源,意思就是打開(kāi)數(shù)據(jù)庫(kù)“學(xué)生”中的表“表”
下面是將數(shù)據(jù)庫(kù)表中的字段值顯示出來(lái)的一個(gè)過(guò)程
Sub View()
Dim i As Integer
For i = 0 To 2
Text1(i) = Rst.Fields(i)'text1為控件數(shù)組
Next
If (Rst.Fields(3) = True) Then
Text1(3) = "男"
Else
Text1(3) = "女"
End If
End Sub
要訪問(wèn)ACCESS數(shù)據(jù)庫(kù)就這樣可以實(shí)現(xiàn),訪問(wèn)SQL也差不多,稍有不同,回答完畢,如還有問(wèn)題請(qǐng)繼續(xù)和我聯(lián)系,本人是專使用VB+SQL/Delphi+SQL開(kāi)發(fā)數(shù)據(jù)庫(kù)管理系統(tǒng)的程序員。
有這個(gè)提示,說(shuō)明錯(cuò)誤在你的SQL語(yǔ)句中。你檢查一下你代碼中的SQL語(yǔ)句。