Visual_Basic 板


LINE

我最近也在弄类似东西 给你参考一下 基本上就是理用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
1F:推 mmx5mmx5:感谢回答 我会参考看看 08/13 04:45
2F:推 mmx5mmx5:请问有方法可以宣告阵列为new sqlparameter吗? 08/18 23:31
3F:→ mmx5mmx5:因为会有null的问题 08/18 23:31
4F:→ lbeeon:Dim pmtdata() As sqlparameter 08/22 11:17
5F:→ lbeeon:在用for each new 不知道是不是你要的东西 08/22 11:17
6F:推 mmx5mmx5:感觉起来应该是 我再查查资料 有问题在上来请教 08/22 22:32
7F:→ mmx5mmx5:非常感谢 08/22 22:32
8F:推 mmx5mmx5:对不起 我试了很久 还是不知道for each new要怎麽使用 08/24 23:57
9F:→ 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)
10F:推 mmx5mmx5:还是先谢谢你 我回来再试试 08/25 09:20
11F:→ mmx5mmx5:非常感谢 08/25 09:20
12F:推 mmx5mmx5:非常感谢 关於前面NEW的部分 已经成功了 但是现在的问题 08/26 03:23
13F:→ mmx5mmx5:是这样的话 会有两个sqlcmd.CommandText 一个是strSQL1 08/26 03:24
14F:→ mmx5mmx5:另一个是我们所设立阵列 如data(10) 请问还是一样写一个 08/26 03:25
15F:→ mmx5mmx5:回圈来sqlcmd.Parameters.Add吗? 目前遇到的问题是 会卡 08/26 03:26
16F:→ mmx5mmx5:在sqlcmd.ExecuteNonQuery() 这个地方 08/26 03:27
17F:→ mmx5mmx5:而错误是 ExecuteNonQuery: CommandText 属性尚未初始化 08/26 03:29
18F:→ mmx5mmx5:我有试过 另外设立一个sqlcmd2 但是也是卡在 08/26 03:29
19F:→ 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)
20F:推 mmx5mmx5:strconn那个我有加上去 应该可以连线成功没问题 08/26 03:52
21F:→ mmx5mmx5:sqlcmd.CommandText = strSQL 就是很大的问题了 因为有两 08/26 03:53
22F:→ mmx5mmx5:个 所以我不知道要怎麽去设立 08/26 03:53
23F:→ mmx5mmx5:我目前一个是 strSQL1 另一个是 strSQL(x) 08/26 03:54
24F:→ lbeeon:给个程式码吧 08/26 15:32
25F:推 mmx5mmx5:http://ppt.cc/_bsz 可以从BUTTON2CLICK的程式码开始看 08/26 19:11
26F:→ mmx5mmx5:问题在那个地方 有些注解是我尝试sqlcmd2的时候所打的 08/26 19:12
27F:→ 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)
28F:推 mmx5mmx5:已收到 我在研究看看 谢谢你 有问题我在上来询问 08/30 20:02
29F:推 mmx5mmx5:我试了很久 还是不太行 可以麻烦举例给我看吗? 08/31 23:00
30F:推 mmx5mmx5:我改成这样还是不行 08/31 23:02
31F:→ mmx5mmx5:While p < testumber 08/31 23:03
32F:→ mmx5mmx5: sqlcmd.CommandText = strSQL(p) 08/31 23:03
33F:→ mmx5mmx5: sqlcmd.Parameters.Add(test(p)) 08/31 23:03
34F:→ mmx5mmx5: If sqlcmd.ExecuteNonQuery() > 0 Then 08/31 23:04
35F:→ mmx5mmx5: MsgBox("OK") 08/31 23:04
36F:→ mmx5mmx5:Else 08/31 23:04
37F:→ mmx5mmx5: MsgBox("Fail") 08/31 23:04
38F:→ mmx5mmx5: End If 08/31 23:05
39F:→ mmx5mmx5: p = p + 1 08/31 23:05
40F:→ mmx5mmx5: End While 08/31 23:05
41F:→ mmx5mmx5:因为没有顺序的问题 所以我把sqlcmd.CommandText=strSQL1 08/31 23:06
42F:→ mmx5mmx5:只要可以执行成功就好 所以我把上面个移到後面去了 08/31 23:07
43F:→ mmx5mmx5:我不太了解 所谓的ExecuteNonQuery的意思是像上面一样的 08/31 23:08
44F:→ 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)
45F:推 mmx5mmx5:错误还是ExecuteNonQuery:CommandText属性尚未初始化 09/01 01:51
46F:推 mmx5mmx5:其他的话我再试试看 非常谢谢你的帮忙 因为有一维阵列要 09/01 01:53
47F:→ mmx5mmx5:输入的关系 所以才会这麽复杂 09/01 01:53
48F:→ mmx5mmx5:我有在思考是不是该换个写法 09/01 01:53
49F:→ mmx5mmx5:要输入笔数不确定的数据 09/01 01:55
50F:→ mmx5mmx5:我目前想的到的只有inputbox 09/01 01:55
51F:→ mmx5mmx5:其他真的就不知道了 09/01 01:55
52F:→ lbeeon:我怀疑你的strSQL(p)是不是真的有东西, 09/01 03:06
53F:→ lbeeon:我会这样写 sqlcmd.CommandText = strSQL(p).ToString 09/01 03:07
54F:→ 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)
55F:推 mmx5mmx5:INSERT INTO Table3 (数据1) VALUES (@test_n(0)) 09/02 00:21
56F:→ mmx5mmx5:INSERT INTO Table3 (数据2) VALUES (@test_n(1)) 09/02 00:21
57F:→ mmx5mmx5:看起来好像是对的 可是还是行不通 我输入testumber=2 09/02 00:22
58F:→ mmx5mmx5:不过错误的地方变了 是SqlException未处理 09/02 00:24
59F:→ mmx5mmx5:接近 '(' 之处的语法不正确。 09/02 00:24
60F:→ mmx5mmx5:必须宣告纯量变数 "@test_n"。 09/02 00:25
61F:→ lbeeon:这错误表示你的sqlparameters 没放进去 所以错误 09/02 01:03
62F:→ lbeeon:其实你的parameter可以都放一样的 只是你再执行前 09/02 01:04
63F:→ lbeeon:再将Parameter.value改掉就好这样你insert内的参数就不用 09/02 01:05
64F:→ lbeeon:一直换 09/02 01:05
65F:→ lbeeon:在一个建议将你的SQL语法放在SQL Server 测试看看 09/02 01:07
66F:→ lbeeon:如果输入的东西Insert後面的都很类似 我会写个Sub 这样call 09/02 01:09
67F:→ lbeeon:比较方便 不过效能就不确定了... 09/02 01:09
68F:推 mmx5mmx5:已收到 所以目前来说好像阵列要写入SQL好像这个方法行不 09/02 01:44
69F:→ mmx5mmx5:通的样子 我再查查看有没有别的方法吧 在这个暑假之前我 09/02 01:44
70F:→ mmx5mmx5:完全不会写程式 现在也只会用方法才拼凑而已 所以很多基 09/02 01:45
71F:→ mmx5mmx5:本的概念我都没有 我只能慢慢的去TRY而已 真的非常感谢你 09/02 01:46
72F:→ mmx5mmx5:的帮助 真的非常谢谢 我会再想想办法的 09/02 01:46
73F:→ mmx5mmx5:再次感谢 感激不尽!!! 09/02 01:47
74F:→ mmx5mmx5:而你最後打的方法我再试试看 希望可以行的通!! 09/02 01:48
75F:→ lbeeon:VB我也不太会..刚好在作资料库所以有用到 很高兴有帮到你 09/02 02:35







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP