為什麼這篇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
我有點誤導 應該用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)
strconn = "Server=(local);database=____;User=____; Password=____"
sqlcmd.CommandText = strSQL
類似這兩行撿查一下,底線部分要補上去。
※ 編輯: lbeeon 來自: 1.170.0.40 (08/26 03:44)
最近較忙沒回應
大概看了一下,你應該是想要利用迴圈控制某特定欄位的輸入輸出,
不過沒很聊解你想控制的東西,但是一搬來說如果我有兩個strSQL
如果有順序執行完成(Transaction 觀念),一個交易結束再執行另一
個的話,我會ExecuteNonQuery後再將sqlcmd.CommandText替換成strSQL2
這樣來說是可行的,如果兩個要同時存在的話,那你就必須再新增一個
sqlcmd2來使用,如果你有Transaction觀念的話,基本上
sqlcmd.ExecuteNonQuery後,前一個strSQL就已經執行結束(committed),
所以直接替換CommandText後在Execute是可行的。 你在思考看看。
※ 編輯: lbeeon 來自: 122.118.26.20 (08/29 22:46)
ExecuteNonQuery回傳值的意思是,執行該SQL所影響的資料筆數,
故常回利用 ExecuteNonQuery 回傳值是否有大於零來確認執行成功於否,
也因為前面提過Transaction的觀念,SQL的執行只有1或0,沒有執行幾行的
程式碼的,所以利用ExecuteNonQuery來作為判斷,對於資料庫的新增、刪除
、更新都能有效掌握。至於你說的不行有點太籠統,是語法問題還是...
貼個錯誤資訊可能比較好解決,希望有幫到你。
※ 編輯: lbeeon 來自: 114.38.3.102 (09/01 01:04)
直接看有沒有東西吧,這樣最快。
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)