Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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
在ms access C#ASP.Net中插入数据_C#_Asp.net - Fatal编程技术网

在ms access C#ASP.Net中插入数据

在ms access C#ASP.Net中插入数据,c#,asp.net,C#,Asp.net,我正在尝试将表单中的数据插入msaccess数据库我有当前代码 OleDbConnection con = new OleDbConnection(); OleDbCommand cmd = new OleDbCommand(); con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\kunz\Documents\Visual Studio 2010\WebSites\Assignment_2

我正在尝试将表单中的数据插入msaccess数据库我有当前代码

OleDbConnection con = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\kunz\Documents\Visual Studio 2010\WebSites\Assignment_2_Mark_2\App_Data\nuclearpopsicledb.mdb";
cmd.Connection = con;
string sql = "insert into users values('"+tbUname.Text+"','"+tbPass.Text+"','"+tbName.Text+"','"+tbEmail.Text+"','"+tbEmail.Text+"')";

try
{
    con.Open();
    cmd.CommandText = sql;
    cmd.ExecuteNonQuery();
    con.Close();
    Label1.Text = "TRY";
}
catch(Exception ex)
{
    Label1.Text = ex.ToString();
    con.Close();
}
我的数据库结构如下:

|用户名|密码|姓名|电子邮件|

但当我运行它时,我会得到一个错误,比如

System.Data.OleDb.OLEDBEException:查询值和 目标字段不相同。在System.Data


我不确定我做错了什么我是C#

的初学者您有一封额外的电子邮件要发送:

cmd.Parameters.AddWithValue("@userName", tbUname.Text.Trim());
cmd.Parameters.AddWithValue("@password", tbPass.Text.Trim());
cmd.Parameters.AddWithValue("@Name", tbName.Text.Trim());
cmd.Parameters.AddWithValue("@Email", tbEmail.Text.Trim());

string sql = 
    "insert into users " +
    "values(@userName, @password, @Name, @Email)";

实际上,表包含四个值,但在该查询中传递了5个值。这是个错误

您的代码:

string sql = "insert into users values('"+tbUname.Text+"','"+tbPass.Text+"','"+tbName.Text+"','"+tbEmail.Text+"','"+tbEmail.Text+"')";

tbEmail.Text
重复了两次。

这是最好的方法吗?有没有更好的方法来防止sqlinjections@GibralterTop然后演示如何进行参数设置。不要展示如何以错误的方式进行操作。参数对于防止sql注入非常有用。但你也需要散列该密码。否则,你或某些恶意用户可能会有一天感到有点好奇,并在
facebook
amazon
bankofamerica
等网站上尝试一些电子邮件密码组合。你实现的对象(如
OleDbConnection
)没有得到正确处理。用using语句包装它们。我知道这可能是一项学习任务,但您正在数据库中存储明文密码。这是一个严重的安全违规行为。密码应该是单向散列和加密的,决不能以明文形式存储。