你先加个断点在 sql = String.Format(sql,  
this.Textname.Text, 
this.Texttel.Text, 
this.Textintel.Text, 
this.TextEmail.Text, 
this.Textcompany.Text, 
this.Textdepartment.Text, 
this.Textposition.Text, 
this.Textre.Text); 看执行过这句代码后sql  的值是什么

解决方案 »

  1.   

    行 82:  OleDbCommand command = new OleDbCommand(sql, connection); 
    設個斷點 看sql的值是什麼?看能否能在 sql server 中執行
      

  2.   

    我觉得是你的SQL语句有问题:
    string aa=textBox1.Text;
    string bb=textBox2.Text;
    String sql="INSERT INTO telbook
    看这个:String sql = "INSERT INTO table(name,pw)values('"+aa+"','"+bb+"')";你确信这个个势力?设置断点看一下!
      

  3.   

    private   void   btnOK_Click(object   sender,   System.EventArgs   e) 

    OleDbConnection   connection   =   new   OleDbConnection(ConnectionString); String   sql   =   "INSERT   INTO   telbook   (name,tel,in-tel,E-mail,company,department,position,re)   VALUES   ( '{1} ', '{2} ', '{3} ', '{4} ', '{5} ', '{6} ', '{7} ', '{8} ') "; 
    sql   =   String.Format(sql,   
    this.Textname.Text, 
    this.Texttel.Text, 
    this.Textintel.Text, 
    this.TextEmail.Text, 
    this.Textcompany.Text, 
    this.Textdepartment.Text, 
    this.Textposition.Text, 
    this.Textre.Text); OleDbCommand   command   =   new   OleDbCommand(sql,   connection); 
    connection.Open(); 
    command.ExecuteNonQuery(); 
    connection.Close(); Response.Redirect( "Default.aspx "); 

    我把程序该了一下,因为在ACCESS中我是把ID这个字段设为第一个,所以该成这样的了,需要插入的各字段该这样的了
    ( '{1} ', '{2} ', '{3} ', '{4} ', '{5} ', '{6} ', '{7} ', '{8} ')
    显示的错误是这样的,
    索引(从零开始)必须大于或等于零,且小于参数列表的大小。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 索引(从零开始)必须大于或等于零,且小于参数列表的大小。源错误: 
    行 71: 
    行 72:             String sql = "INSERT INTO telbook (name,tel,in-tel,E-mail,company,department,position,re) VALUES ('{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')";
    行 73:  sql = String.Format(sql, 
    行 74:  this.Textname.Text,
    行 75:  this.Texttel.Text,
     

    这是什么原因呢?
      

  4.   

    你先设个断点主要看下SQL语句和连接字符串,一般出问题都是在这2个地方
      

  5.   

    应该不是连接字符串的问题,我不用参数,直接往里面插记录,试了好多次,有的字段加进去可以,有的不可以,但又不是某一个固定的字段,很奇怪的,就是直接套用的sql语句阿 
      

  6.   

    好像是position这个字段的问题,排除了其他字段的可能性,只要加入这个字段就不行,是position这个字段不符合命名规则吗?
      

  7.   

    应该是position字段的问题吧,我换成job就好了,下面再 测试看看带参数的行不行?
      

  8.   

    换成参数之后,这样子:
    ('{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')
    是不行的,
    这样子:
    ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')
    是可以的
    问题解决了
    此时再把job换成position,不行的,出现insert into有错误的提示信息
    再把position换成job就好了
    总结:是position字段的问题
    什么问题呢?不明白
      

  9.   

    ok,position是个关键字,不能使用,要使用就加个转义符吧,比如
    " INSERT INTO telbook (name,tel,in_tel,E_mail,company,department,[position],re) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')";
    经验:如果提示sql语句有问题,但实在是认为没问题,那就考虑考虑是否把关键字当作普通字段使用了