Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何将VB.Net编程中一个窗体中的数据添加到两个Access数据库表中?_Sql_Vb.net_Forms_Ms Access - Fatal编程技术网

Sql 如何将VB.Net编程中一个窗体中的数据添加到两个Access数据库表中?

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”的相

我是一个编程初学者,我在vb.net中开始了一个项目,我必须为我的大学工作做这个项目

要通过visual studio中的表单在数据库中添加用户的数据,当我填写用户表单中字段的值时,当我单击按钮时,在access数据库中添加条目时出错,并且数据没有添加到数据库中

我的程序是这样的:

错误看起来像

在数据库中,UsersTable有一个数据类型为“AutoNumber”的UserID列和上面SQL查询代码中提到的所有其他列,并且该表完全为空

LoginTable具有数据类型为“Number”的相同UserID列以及username和password列。这张桌子也是空的。 UsersTable通过UserID、Username和Password列与LoginTable关联

如何在两个表中一次性添加用户的数据


我有一种预感,这个问题与数据库有关,比如它被锁定了或者其他什么。它在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参数化出了问题,所以您应该恢复使用它。你不应该这样做。我明白占位符的意思。谢谢你,凯斯!我将再次尝试参数化方法。