在ms access C#ASP.Net中插入数据
我正在尝试将表单中的数据插入msaccess数据库我有当前代码在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
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语句包装它们。我知道这可能是一项学习任务,但您正在数据库中存储明文密码。这是一个严重的安全违规行为。密码应该是单向散列和加密的,决不能以明文形式存储。