Sql 如何将VB.Net编程中一个窗体中的数据添加到两个Access数据库表中?
我是一个编程初学者,我在vb.net中开始了一个项目,我必须为我的大学工作做这个项目 要通过visual studio中的表单在数据库中添加用户的数据,当我填写用户表单中字段的值时,当我单击按钮时,在access数据库中添加条目时出错,并且数据没有添加到数据库中 我的程序是这样的: 错误看起来像 在数据库中,UsersTable有一个数据类型为“AutoNumber”的UserID列和上面SQL查询代码中提到的所有其他列,并且该表完全为空 LoginTable具有数据类型为“Number”的相同UserID列以及username和password列。这张桌子也是空的。 UsersTable通过UserID、Username和Password列与LoginTable关联 如何在两个表中一次性添加用户的数据Sql 如何将VB.Net编程中一个窗体中的数据添加到两个Access数据库表中?,sql,vb.net,forms,ms-access,Sql,Vb.net,Forms,Ms Access,我是一个编程初学者,我在vb.net中开始了一个项目,我必须为我的大学工作做这个项目 要通过visual studio中的表单在数据库中添加用户的数据,当我填写用户表单中字段的值时,当我单击按钮时,在access数据库中添加条目时出错,并且数据没有添加到数据库中 我的程序是这样的: 错误看起来像 在数据库中,UsersTable有一个数据类型为“AutoNumber”的UserID列和上面SQL查询代码中提到的所有其他列,并且该表完全为空 LoginTable具有数据类型为“Number”的相
我有一种预感,这个问题与数据库有关,比如它被锁定了或者其他什么。它在access中打开,但不允许我通过vb.net中的表单输入任何数据。这样的问题存在吗 SQL注入预防注释尽管如此,我还是想指出,您第一次使用字符串格式为params数组提供了10个参数,但字符串仅包含3个占位符。虽然这不会导致错误,但它很可能是一个代码缺陷,让我相信您在代码的其他地方犯了一些我们看不到的类似错误,这就是错误 例如,这行代码将导致您看到的错误:
string.Format("abc {0} {1} {2}", "firstarg", "secondarg")
这是一个错误,因为在格式字符串中没有第三个参数代替{2}。仔细检查字符串格式,以确保提供给params数组的参数数量匹配或超过格式字符串中使用的占位符数量:
string.Format("abc {0} {1} {2}", "firstarg", "secondarg") 'doesn't work
string.Format("abc {0} {1} {2}", "firstarg", "secondarg", thirdarg") 'works
string.Format("abc {0} {1} {2}", "firstarg", "secondarg", thirdarg", fourtharg") 'works, fourtharg is ignored
string.Format("abc {0} {1} {3}", "firstarg", "secondarg", thirdarg", fourtharg") 'works, thirdarg is ignored - HAS TO HAVE 4 arguments supplied after the format
那么,也请考虑查看-dppER是一个扩展,它将允许您继续进行像这样的SQL /数据访问,因此它对代码的更改最小,和学习曲线,但它处理参数化和将对象转换为表数据/将表数据转换为对象,这将减轻您编写数百行menial reader的头痛。GetInteger0调用用于检索数据库数据并将其转换回程序中可用的对象
请不要使用图像这里的代码:粘贴任何与问题相关的代码。我没有足够的信誉点在这里发布程序-网站告诉我。只需使用格式化文本。请阅读-string串联使用string.FormatINSERT到x值“{0}”,userSuppliedValue在您的例子中,将用户提供的值数据直接附加到SQL命令中是一个非常糟糕的想法,尤其是当有人以Dermot O'Leary的名字出现时,它会爆炸,这实际上是一个错误,应该不惜一切代价避免。作为一名学习型开发人员,我恳请您永远不要再以这种方式编写SQL了,因此您所处的情况是,两种方法可能出于相同的原因都不起作用,但其中一种是一个糟糕的想法。这给出了两个结论:1不是SQL参数化出了问题,所以您应该恢复使用它。你不应该这样做。我明白占位符的意思。谢谢你,凯斯!我将再次尝试参数化方法。