Re: [.NET] 關於VB.net寫入資料庫mdf或MSSQL問題
我最近也在弄類似東西 給你參考一下
基本上就是理用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
推
08/13 04:45, , 1F
08/13 04:45, 1F
推
08/18 23:31, , 2F
08/18 23:31, 2F
→
08/18 23:31, , 3F
08/18 23:31, 3F
→
08/22 11:17, , 4F
08/22 11:17, 4F
→
08/22 11:17, , 5F
08/22 11:17, 5F
推
08/22 22:32, , 6F
08/22 22:32, 6F
→
08/22 22:32, , 7F
08/22 22:32, 7F
推
08/24 23:57, , 8F
08/24 23:57, 8F
→
08/24 23:57, , 9F
08/24 23:57, 9F
我有點誤導 應該用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)
推
08/25 09:20, , 10F
08/25 09:20, 10F
→
08/25 09:20, , 11F
08/25 09:20, 11F
推
08/26 03:23, , 12F
08/26 03:23, 12F
→
08/26 03:24, , 13F
08/26 03:24, 13F
→
08/26 03:25, , 14F
08/26 03:25, 14F
→
08/26 03:26, , 15F
08/26 03:26, 15F
→
08/26 03:27, , 16F
08/26 03:27, 16F
→
08/26 03:29, , 17F
08/26 03:29, 17F
→
08/26 03:29, , 18F
08/26 03:29, 18F
→
08/26 03:30, , 19F
08/26 03:30, 19F
strconn = "Server=(local);database=____;User=____; Password=____"
sqlcmd.CommandText = strSQL
類似這兩行撿查一下,底線部分要補上去。
※ 編輯: lbeeon 來自: 1.170.0.40 (08/26 03:44)
推
08/26 03:52, , 20F
08/26 03:52, 20F
→
08/26 03:53, , 21F
08/26 03:53, 21F
→
08/26 03:53, , 22F
08/26 03:53, 22F
→
08/26 03:54, , 23F
08/26 03:54, 23F
→
08/26 15:32, , 24F
08/26 15:32, 24F
推
08/26 19:11, , 25F
08/26 19:11, 25F
→
08/26 19:12, , 26F
08/26 19:12, 26F
→
08/26 19:13, , 27F
08/26 19:13, 27F
最近較忙沒回應
大概看了一下,你應該是想要利用迴圈控制某特定欄位的輸入輸出,
不過沒很聊解你想控制的東西,但是一搬來說如果我有兩個strSQL
如果有順序執行完成(Transaction 觀念),一個交易結束再執行另一
個的話,我會ExecuteNonQuery後再將sqlcmd.CommandText替換成strSQL2
這樣來說是可行的,如果兩個要同時存在的話,那你就必須再新增一個
sqlcmd2來使用,如果你有Transaction觀念的話,基本上
sqlcmd.ExecuteNonQuery後,前一個strSQL就已經執行結束(committed),
所以直接替換CommandText後在Execute是可行的。 你在思考看看。
※ 編輯: lbeeon 來自: 122.118.26.20 (08/29 22:46)
推
08/30 20:02, , 28F
08/30 20:02, 28F
推
08/31 23:00, , 29F
08/31 23:00, 29F
推
08/31 23:02, , 30F
08/31 23:02, 30F
→
08/31 23:03, , 31F
08/31 23:03, 31F
→
08/31 23:03, , 32F
08/31 23:03, 32F
→
08/31 23:03, , 33F
08/31 23:03, 33F
→
08/31 23:04, , 34F
08/31 23:04, 34F
→
08/31 23:04, , 35F
08/31 23:04, 35F
→
08/31 23:04, , 36F
08/31 23:04, 36F
→
08/31 23:04, , 37F
08/31 23:04, 37F
→
08/31 23:05, , 38F
08/31 23:05, 38F
→
08/31 23:05, , 39F
08/31 23:05, 39F
→
08/31 23:05, , 40F
08/31 23:05, 40F
→
08/31 23:06, , 41F
08/31 23:06, 41F
→
08/31 23:07, , 42F
08/31 23:07, 42F
→
08/31 23:08, , 43F
08/31 23:08, 43F
→
08/31 23:08, , 44F
08/31 23:08, 44F
ExecuteNonQuery回傳值的意思是,執行該SQL所影響的資料筆數,
故常回利用 ExecuteNonQuery 回傳值是否有大於零來確認執行成功於否,
也因為前面提過Transaction的觀念,SQL的執行只有1或0,沒有執行幾行的
程式碼的,所以利用ExecuteNonQuery來作為判斷,對於資料庫的新增、刪除
、更新都能有效掌握。至於你說的不行有點太籠統,是語法問題還是...
貼個錯誤資訊可能比較好解決,希望有幫到你。
※ 編輯: lbeeon 來自: 114.38.3.102 (09/01 01:04)
推
09/01 01:51, , 45F
09/01 01:51, 45F
推
09/01 01:53, , 46F
09/01 01:53, 46F
→
09/01 01:53, , 47F
09/01 01:53, 47F
→
09/01 01:53, , 48F
09/01 01:53, 48F
→
09/01 01:55, , 49F
09/01 01:55, 49F
→
09/01 01:55, , 50F
09/01 01:55, 50F
→
09/01 01:55, , 51F
09/01 01:55, 51F
→
09/01 03:06, , 52F
09/01 03:06, 52F
→
09/01 03:07, , 53F
09/01 03:07, 53F
→
09/01 03:08, , 54F
09/01 03:08, 54F
直接看有沒有東西吧,這樣最快。
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)
推
09/02 00:21, , 55F
09/02 00:21, 55F
→
09/02 00:21, , 56F
09/02 00:21, 56F
→
09/02 00:22, , 57F
09/02 00:22, 57F
→
09/02 00:24, , 58F
09/02 00:24, 58F
→
09/02 00:24, , 59F
09/02 00:24, 59F
→
09/02 00:25, , 60F
09/02 00:25, 60F
→
09/02 01:03, , 61F
09/02 01:03, 61F
→
09/02 01:04, , 62F
09/02 01:04, 62F
→
09/02 01:05, , 63F
09/02 01:05, 63F
→
09/02 01:05, , 64F
09/02 01:05, 64F
→
09/02 01:07, , 65F
09/02 01:07, 65F
→
09/02 01:09, , 66F
09/02 01:09, 66F
→
09/02 01:09, , 67F
09/02 01:09, 67F
推
09/02 01:44, , 68F
09/02 01:44, 68F
→
09/02 01:44, , 69F
09/02 01:44, 69F
→
09/02 01:45, , 70F
09/02 01:45, 70F
→
09/02 01:46, , 71F
09/02 01:46, 71F
→
09/02 01:46, , 72F
09/02 01:46, 72F
→
09/02 01:47, , 73F
09/02 01:47, 73F
→
09/02 01:48, , 74F
09/02 01:48, 74F
→
09/02 02:35, , 75F
09/02 02:35, 75F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章