请教错在哪里,分不多,谢谢大家了
string strCon1 = "Data Source =" + Server.MapPath("aaa.accdb");
string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=false;" + strCon1;
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = strCon;
String insertCmd = "insert into azhou (名称) values (@f)";
OleDbCommand myCommand = new OleDbCommand(insertCmd, conn);
myCommand.Parameters.Add(new OleDbParameter("@f", OleDbType.VarChar, 11));
myCommand.Parameters["@f"].Value = TextBox1.Text;
myCommand.Connection.Open();
try
{
myCommand.ExecuteNonQuery();
Message.InnerHtml = "<b>Record Added</b><br>" + insertCmd.ToString();
}
catch (SqlException ea)
{
if (ea.Number == 2627)
Message.InnerHtml = "ERROR: A record already exists with the same primary key";
else
Message.InnerHtml = "ERROR: Could not add record, please ensure the fields are correctly filled out";
Message.Style["color"] = "red";
}
myCommand.Connection.Close();
BindGrid();
}
有3个问题:
1 为什么我去掉try 和catch里的内容就不能添加东西了。程序能运行。只是点按钮的时候添加不进去东西,也没有报错。。当然,如果不去掉一切正常。
2 String insertCmd = "insert into azhou (名称) values (@f)";这句话我想问一下,因为一些原因导致我很迷惑,括号内的名称是数据库里的字段名? 后面的@f是变量吗?
没有分数了,不好意思。等富裕了会回报的。
------解决方案-------------------- myCommand.ExecuteNonQuery();这句是关键,执行insert语句。去掉try里的东西当然不行。
@f是参数名,参数值是TextBox1.Text;
------解决方案-------------------- 探讨 myCommand.ExecuteNonQuery();这句是关键,执行insert语句。去掉try里的东西当然不行。 @f是参数名,参数值是TextBox1.Text;
------解决方案-------------------- try中的语句是执行插入数据用的,去掉就自然不能插入数据了。
catch是出现异常显示错误的,
这里sql是用的参数方式执行插入,@f就是参数,它的值在下面的语句中赋给,
myCommand.Parameters.Add(new OleDbParameter("@f", OleDbType.VarChar, 11)); //定义参数类型
myCommand.Parameters["@f"].Value = TextBox1.Text; //赋给参数值