[爆卦]VB 資料庫是什麼?優點缺點精華區懶人包

為什麼這篇VB 資料庫鄉民發文收入到精華區:因為在VB 資料庫這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者lbeeon (力比恩)看板Visual_Basic標題Re: [.NET] 關於VB.net寫...

VB 資料庫 在 龍顥中-ZJY®日京頁影像設計 Instagram 的最讚貼文

2020-05-10 22:51:50

整年的資料庫是可以想見的... 本篇完整版請至: https://www.facebook.com/haojhong . 前兩篇的Vlog請至連結: 1.https://www.facebook.com/haojhong/videos/a.10207178514240675/102102090618...


我最近也在弄類似東西 給你參考一下
基本上就是理用SQL 將要輸入的東西參數化
我目前這樣弄感覺頗方便..

Dim conn As SqlConnection
Dim sqlcmd As New SqlCommand
Dim strconn, strSQL As String

strconn = "Server=(local);database=;User=; Password="
strSQL = "INSERT INTO Table1 (data1,data2) VALUES (@data1,@data2)"

'SQL參數命名設置
Dim pmtdata1, pmtdata2 As New sqlParameter

pmtdata1.ParameterName = "@data1"
pmtdate1.Value = oTextbox.text
pmtdata2.ParameterName = "@data2"
pmtdata2.Value = oDropdownlist.selectedvalue

conn = New SqlConnection(strconn)
conn.Open()

sqlcmd.Connection = conn
sqlcmd.CommandText = strSQL

sqlcmd.Parameters.Add(pmtdata1)
sqlcmd.Parameters.Add(pmtdata2)


If sqlcmd.ExecuteNonQuery() > 0 then
Msgbox("OK")
Else
MsgBox("Fail")
End if

※ 引述《mmx5mmx5 (=新竹貢丸=)》之銘言:
: 承上篇文章
: 我已經寫出用TEXTBOX與INPUTBOX來輸入資料
: 然後利用 table.Columns.Add 和 table.Rows.Add 來建立Table
: 最後使用 DataGridView1.DataSource = table 來顯示
: 已經可以顯示出我想顯示出來Table了
: 接下來需要 上傳 到資料庫 (MSSQLSERVER2008)
: 我有查到很多的範例
: 大部分都是類似這樣的範例
: Dim conndbstr As String
: conndbstr = "data Source=.\MSSQLSERVER;initial catalog = company;"
: + "user id = sa;password=12345"
: Dim conn As SqlConnection = New SqlConnection(conndbstr)
: conn.Open()
: 或者是連到mdf的
: Dim conndb = New SqlConnection
: Conndb.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\dbtest.mdf;Integrated
: Security=True;User Instance=True;"
: Conndb.Open()
: 然後之後再insert into 到資料庫裡面
: 我想問的是
: 因為我在資料庫裡面有建立Table
: 要怎麼樣才能把資料輸入到我想要的欄位裡面
: 或者是 怎樣才能 上傳資料到資料庫裡面
: 就算偵測沒有錯誤
: 我按了按鈕以後 他還是無法寫入資料庫裡面
: 這是我最大的疑問
: 請問要怎麼寫才能寫入資料庫裡面
: 希望有人可以回答我的問題
: 感謝您看完這篇文章
: 非常感謝



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.209.136.209
mmx5mmx5:感謝回答 我會參考看看 08/13 04:45
mmx5mmx5:請問有方法可以宣告陣列為new sqlparameter嗎? 08/18 23:31
mmx5mmx5:因為會有null的問題 08/18 23:31
lbeeon:Dim pmtdata() As sqlparameter 08/22 11:17
lbeeon:在用for each new 不知道是不是你要的東西 08/22 11:17
mmx5mmx5:感覺起來應該是 我再查查資料 有問題在上來請教 08/22 22:32
mmx5mmx5:非常感謝 08/22 22:32
mmx5mmx5:對不起 我試了很久 還是不知道for each new要怎麼使用 08/24 23:57
mmx5mmx5:可以再次請教嗎? 08/24 23:57


我有點誤導 應該用for 就好了

.net其實我不太確定宣告陣列後是否要建構子(new)

之前學OO的時候是用JAVA,再使用前都要new(相當於取的記憶體位置)

才不會產生錯誤

不過.net也是OO一種應該是對的,下面程式碼你在參考一下

Dim data(10) As SqlParameter
Dim i As Integer = 0

For i = 0 To data.Length - 1 Step 1
data(i) = New SqlParameter
data(i).Value = i.ToString
Next

※ 編輯: lbeeon 來自: 1.170.0.40 (08/25 03:05)
mmx5mmx5:還是先謝謝你 我回來再試試 08/25 09:20
mmx5mmx5:非常感謝 08/25 09:20
mmx5mmx5:非常感謝 關於前面NEW的部分 已經成功了 但是現在的問題 08/26 03:23
mmx5mmx5:是這樣的話 會有兩個sqlcmd.CommandText 一個是strSQL1 08/26 03:24
mmx5mmx5:另一個是我們所設立陣列 如data(10) 請問還是一樣寫一個 08/26 03:25
mmx5mmx5:迴圈來sqlcmd.Parameters.Add嗎? 目前遇到的問題是 會卡 08/26 03:26
mmx5mmx5:在sqlcmd.ExecuteNonQuery() 這個地方 08/26 03:27
mmx5mmx5:而錯誤是 ExecuteNonQuery: CommandText 屬性尚未初始化 08/26 03:29
mmx5mmx5:我有試過 另外設立一個sqlcmd2 但是也是卡在 08/26 03:29
mmx5mmx5: sqlcmd.ExecuteNonQuery()這個地方 08/26 03:30

strconn = "Server=(local);database=____;User=____; Password=____"
sqlcmd.CommandText = strSQL

類似這兩行撿查一下,底線部分要補上去。
※ 編輯: lbeeon 來自: 1.170.0.40 (08/26 03:44)
mmx5mmx5:strconn那個我有加上去 應該可以連線成功沒問題 08/26 03:52
mmx5mmx5:sqlcmd.CommandText = strSQL 就是很大的問題了 因為有兩 08/26 03:53
mmx5mmx5:個 所以我不知道要怎麼去設立 08/26 03:53
mmx5mmx5:我目前一個是 strSQL1 另一個是 strSQL(x) 08/26 03:54
lbeeon:給個程式碼吧 08/26 15:32
mmx5mmx5:http://ppt.cc/_bsz 可以從BUTTON2CLICK的程式碼開始看 08/26 19:11
mmx5mmx5:問題在那個地方 有些註解是我嘗試sqlcmd2的時候所打的 08/26 19:12
mmx5mmx5:麻煩你了 真的非常打擾 非常感謝你 08/26 19:13

最近較忙沒回應

大概看了一下,你應該是想要利用迴圈控制某特定欄位的輸入輸出,

不過沒很聊解你想控制的東西,但是一搬來說如果我有兩個strSQL

如果有順序執行完成(Transaction 觀念),一個交易結束再執行另一

個的話,我會ExecuteNonQuery後再將sqlcmd.CommandText替換成strSQL2

這樣來說是可行的,如果兩個要同時存在的話,那你就必須再新增一個

sqlcmd2來使用,如果你有Transaction觀念的話,基本上

sqlcmd.ExecuteNonQuery後,前一個strSQL就已經執行結束(committed),

所以直接替換CommandText後在Execute是可行的。 你在思考看看。


※ 編輯: lbeeon 來自: 122.118.26.20 (08/29 22:46)
mmx5mmx5:已收到 我在研究看看 謝謝你 有問題我在上來詢問 08/30 20:02
mmx5mmx5:我試了很久 還是不太行 可以麻煩舉例給我看嗎? 08/31 23:00
mmx5mmx5:我改成這樣還是不行 08/31 23:02
mmx5mmx5:While p < testumber 08/31 23:03
mmx5mmx5: sqlcmd.CommandText = strSQL(p) 08/31 23:03
mmx5mmx5: sqlcmd.Parameters.Add(test(p)) 08/31 23:03
mmx5mmx5: If sqlcmd.ExecuteNonQuery() > 0 Then 08/31 23:04
mmx5mmx5: MsgBox("OK") 08/31 23:04
mmx5mmx5:Else 08/31 23:04
mmx5mmx5: MsgBox("Fail") 08/31 23:04
mmx5mmx5: End If 08/31 23:05
mmx5mmx5: p = p + 1 08/31 23:05
mmx5mmx5: End While 08/31 23:05
mmx5mmx5:因為沒有順序的問題 所以我把sqlcmd.CommandText=strSQL1 08/31 23:06
mmx5mmx5:只要可以執行成功就好 所以我把上面個移到後面去了 08/31 23:07
mmx5mmx5:我不太了解 所謂的ExecuteNonQuery的意思是像上面一樣的 08/31 23:08
mmx5mmx5:sqlcmd.ExecuteNonQuery() > 0 先打這個的意思嗎? 08/31 23:08

ExecuteNonQuery回傳值的意思是,執行該SQL所影響的資料筆數,

故常回利用 ExecuteNonQuery 回傳值是否有大於零來確認執行成功於否,

也因為前面提過Transaction的觀念,SQL的執行只有1或0,沒有執行幾行的

程式碼的,所以利用ExecuteNonQuery來作為判斷,對於資料庫的新增、刪除

、更新都能有效掌握。至於你說的不行有點太籠統,是語法問題還是...

貼個錯誤資訊可能比較好解決,希望有幫到你。
※ 編輯: lbeeon 來自: 114.38.3.102 (09/01 01:04)
mmx5mmx5:錯誤還是ExecuteNonQuery:CommandText屬性尚未初始化 09/01 01:51
mmx5mmx5:其他的話我再試試看 非常謝謝你的幫忙 因為有一維陣列要 09/01 01:53
mmx5mmx5:輸入的關係 所以才會這麼複雜 09/01 01:53
mmx5mmx5:我有在思考是不是該換個寫法 09/01 01:53
mmx5mmx5:要輸入筆數不確定的數據 09/01 01:55
mmx5mmx5:我目前想的到的只有inputbox 09/01 01:55
mmx5mmx5:其他真的就不知道了 09/01 01:55
lbeeon:我懷疑你的strSQL(p)是不是真的有東西, 09/01 03:06
lbeeon:我會這樣寫 sqlcmd.CommandText = strSQL(p).ToString 09/01 03:07
lbeeon:確保assign CommandText的時候是字串 09/01 03:08

直接看有沒有東西吧,這樣最快。

While p < testumber

'sqlcmd.CommandText = strSQL(p)
'sqlcmd.Parameters.Add(test(p))

'If sqlcmd.ExecuteNonQuery() > 0 Then
'MsgBox("OK")
'Else
'MsgBox("Fail")
'End If

MsgBox(strSQL(p).ToString) '先確認strSQL重的SQL是不是你想要的
'能用在註解掉
p = p + 1

End While
※ 編輯: lbeeon 來自: 114.38.3.102 (09/01 03:14)
※ 編輯: lbeeon 來自: 114.38.3.102 (09/01 03:20)
mmx5mmx5:INSERT INTO Table3 (數據1) VALUES (@test_n(0)) 09/02 00:21
mmx5mmx5:INSERT INTO Table3 (數據2) VALUES (@test_n(1)) 09/02 00:21
mmx5mmx5:看起來好像是對的 可是還是行不通 我輸入testumber=2 09/02 00:22
mmx5mmx5:不過錯誤的地方變了 是SqlException未處理 09/02 00:24
mmx5mmx5:接近 '(' 之處的語法不正確。 09/02 00:24
mmx5mmx5:必須宣告純量變數 "@test_n"。 09/02 00:25
lbeeon:這錯誤表示你的sqlparameters 沒放進去 所以錯誤 09/02 01:03
lbeeon:其實你的parameter可以都放一樣的 只是你再執行前 09/02 01:04
lbeeon:再將Parameter.value改掉就好這樣你insert內的參數就不用 09/02 01:05
lbeeon:一直換 09/02 01:05
lbeeon:在一個建議將你的SQL語法放在SQL Server 測試看看 09/02 01:07
lbeeon:如果輸入的東西Insert後面的都很類似 我會寫個Sub 這樣call 09/02 01:09
lbeeon:比較方便 不過效能就不確定了... 09/02 01:09
mmx5mmx5:已收到 所以目前來說好像陣列要寫入SQL好像這個方法行不 09/02 01:44
mmx5mmx5:通的樣子 我再查查看有沒有別的方法吧 在這個暑假之前我 09/02 01:44
mmx5mmx5:完全不會寫程式 現在也只會用方法才拼湊而已 所以很多基 09/02 01:45
mmx5mmx5:本的概念我都沒有 我只能慢慢的去TRY而已 真的非常感謝你 09/02 01:46
mmx5mmx5:的幫助 真的非常謝謝 我會再想想辦法的 09/02 01:46
mmx5mmx5:再次感謝 感激不盡!!! 09/02 01:47
mmx5mmx5:而你最後打的方法我再試試看 希望可以行的通!! 09/02 01:48
lbeeon:VB我也不太會..剛好在作資料庫所以有用到 很高興有幫到你 09/02 02:35

你可能也想看看

搜尋相關網站