ASP.Net 访问连接
ASP.Net Connection to Access
这是我的代码,但我无法将数据插入 MS Access 数据库
protected void Submit_Click(object sender, EventArgs e)
{
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;"
+ @"Data Source=E:\Parhai\Semester 06\Web\Assignments\i140097_Assignment_02\i140097_a02\i140097_a02\Database\Survey.mdb; Persist Security Info=False";
con = new OleDbConnection(connectionString);
con.Open();
using (con)
{
cmd = new OleDbCommand("INSERT INTO [Person] (Gender, Age, Occupation, Income) VALUES (" + gender.Text + ",'" + age.Text + ",'" + occup.Text + ",'" + income.Text + ")");
cmd.Parameters.AddWithValue("@Gender", gender.Text.ToString());
cmd.Parameters.AddWithValue("@Age", int.Parse(age.Text.ToString()));
cmd.Parameters.AddWithValue("@Occupation", occup.Text.ToString());
cmd.Parameters.AddWithValue("@Income", int.Parse(income.Text.ToString()));
lbl_show.Text = "Added!!!";
}
}
您正在定义参数,但您的命令文本没有参数占位符。
像往常一样,在连接字符串时,很容易犯一些语法错误。在你的数据库中 Gender 似乎是一个字符串字段,所以你需要在值周围加上引号。相反,Age 似乎是一个 Integer 并且您不需要引号等等...
所以第一步是放弃字符串连接,只使用下面定义的参数。
cmd = new OleDbCommand(@"INSERT INTO [Person]
(Gender, Age, Occupation, Income) VALUES
(@Gender, @Age, @Occupation, @Income)", con);
cmd.Parameters.AddWithValue("@Gender", gender.Text);
cmd.Parameters.AddWithValue("@Age", int.Parse(age.Text));
cmd.Parameters.AddWithValue("@Occupation", occup.Text);
cmd.Parameters.AddWithValue("@Income", int.Parse(income.Text));
cmd.ExecuteNonQuery();
另一个问题是构建命令时缺少连接。
该命令本身无法知道它应该在哪个数据库上执行。您需要将 OleDbConnection 作为第二个参数传递给 OleDbCommand 构造函数,或者在执行命令之前设置 Connection 属性。
当然,命令要在一天结束时执行.....
注意。我还删除了那些文本框的文本 属性 之后的 ToString()。文本已经是字符串,无需转成字符串
这是我的代码,但我无法将数据插入 MS Access 数据库
protected void Submit_Click(object sender, EventArgs e)
{
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;"
+ @"Data Source=E:\Parhai\Semester 06\Web\Assignments\i140097_Assignment_02\i140097_a02\i140097_a02\Database\Survey.mdb; Persist Security Info=False";
con = new OleDbConnection(connectionString);
con.Open();
using (con)
{
cmd = new OleDbCommand("INSERT INTO [Person] (Gender, Age, Occupation, Income) VALUES (" + gender.Text + ",'" + age.Text + ",'" + occup.Text + ",'" + income.Text + ")");
cmd.Parameters.AddWithValue("@Gender", gender.Text.ToString());
cmd.Parameters.AddWithValue("@Age", int.Parse(age.Text.ToString()));
cmd.Parameters.AddWithValue("@Occupation", occup.Text.ToString());
cmd.Parameters.AddWithValue("@Income", int.Parse(income.Text.ToString()));
lbl_show.Text = "Added!!!";
}
}
您正在定义参数,但您的命令文本没有参数占位符。
像往常一样,在连接字符串时,很容易犯一些语法错误。在你的数据库中 Gender 似乎是一个字符串字段,所以你需要在值周围加上引号。相反,Age 似乎是一个 Integer 并且您不需要引号等等...
所以第一步是放弃字符串连接,只使用下面定义的参数。
cmd = new OleDbCommand(@"INSERT INTO [Person]
(Gender, Age, Occupation, Income) VALUES
(@Gender, @Age, @Occupation, @Income)", con);
cmd.Parameters.AddWithValue("@Gender", gender.Text);
cmd.Parameters.AddWithValue("@Age", int.Parse(age.Text));
cmd.Parameters.AddWithValue("@Occupation", occup.Text);
cmd.Parameters.AddWithValue("@Income", int.Parse(income.Text));
cmd.ExecuteNonQuery();
另一个问题是构建命令时缺少连接。
该命令本身无法知道它应该在哪个数据库上执行。您需要将 OleDbConnection 作为第二个参数传递给 OleDbCommand 构造函数,或者在执行命令之前设置 Connection 属性。
当然,命令要在一天结束时执行.....
注意。我还删除了那些文本框的文本 属性 之后的 ToString()。文本已经是字符串,无需转成字符串