日期:2014-05-17  浏览次数:20532 次

请教错在哪里,分不多,谢谢大家了
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; //赋给参数值