sql = "insert into 职工(编号,姓名,出生年月) values(@编号,@姓名,@出生年月) "
不改sqlstring不行吧!
sql = "insert into 职工(编号,姓名,出生年月) values('{0}','{1}','{2}') "
再使用string.Format(sql,TextBox1.Text,TextBox2.Text,TextBox3.Text)但是虽然参数复杂但是参数安全!你可以参考SqlHelper是怎么处理这些参数的!

解决方案 »

  1.   

    好象不行.
    错误提示:System.Data.OleDb.OleDbException: 标准表达式中数据类型不匹配。 at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at second.WebForm1.insertdata() in c:\inetpub\wwwroot\second\WebForm1.aspx.vb:line 101
      

  2.   

    你可以直接写sql语句增加
    sql = "insert into 职工(编号,姓名,出生年月) values(1,'aa',#12/4/2001#)"但这样做不好的是在程序调试的时候需要对sql语句进行大的修改(比如一个n行的sql语句),而且参数类型安全也不好,参数在调试的时候比较方便,虽然要写多点东西。
      

  3.   

    sql = String.Format("insert into 职工(编号,姓名,出生年月) values('{0}','{1}','#{2}#') ",TextBox1.Text,TextBox2.Text,DateTime.Parse(TextBox3.Text).ToString("M/d/yyyy"));
      

  4.   

    你的数据类型不对,修改如下:
    comm.Parameters.Add(New System.Data.OleDb.OleDbParameter("@编号", SqlDbType.Int))
            comm.Parameters("@编号").Value = CInt(TextBox1.Text)        comm.Parameters.Add(New System.Data.OleDb.OleDbParameter("@姓名", SqlDbType.Char))
            comm.Parameters("@姓名").Value = TextBox2.Text        comm.Parameters.Add(New System.Data.OleDb.OleDbParameter("@出生年月", SqlDbType.Char))
            comm.Parameters("@出生年月").Value = TextBox3.Text        Try
                comm.Connection.Open()
      增加:    comm.CommandType = CommandType.Text
      

  5.   

    上面的代码是能够实现的,
    我的目的是要把
    comm.Parameters.Add(New System.Data.OleDb.OleDbParameter("@编号", System.Data.OleDb.OleDbType.Integer, 10))
            comm.Parameters("@编号").Value = TextBox1.Text
    这些去掉,而在sql改点东西。
    wangjingjing390(晶晶) 回答的可以使用.
    就是在对boolean型插入的时候提示数据类型错误.还有就是:在access和sql server上,这些代码是不是都是一样.如果更改数据库的话,需不需要更改东西.?????????????
      

  6.   

    有些细微的地方不太一样,比如在插入时间上的语句就不同,通配符就不一样~
    楼住的意思是不想插入“编号”是吧?
    sql = "insert into 职工(编号,姓名,出生年月) values(‘你想要的东西’,@姓名,@出生年月) "
      

  7.   

    楼上的误会了。
    我想要把:
    comm.Parameters.Add(New System.Data.OleDb.OleDbParameter("@编号", System.Data.OleDb.OleDbType.Integer, 10))
            comm.Parameters("@编号").Value = TextBox1.Text        comm.Parameters.Add(New System.Data.OleDb.OleDbParameter("@姓名", System.Data.OleDb.OleDbType.Char, 50))
            comm.Parameters("@姓名").Value = TextBox2.Text        comm.Parameters.Add(New System.Data.OleDb.OleDbParameter("@出生年月", System.Data.OleDb.OleDbType.DBDate, 10))
            comm.Parameters("@出生年月").Value = TextBox3.Text
    这些都省掉,因为写这些的时候实在是麻烦.后来我是用楼上的sql = String.Format("insert into 职工(编号,姓名,出生年月) values('{0}','{1}','#{2}#') ",TextBox1.Text,TextBox2.Text,DateTime.Parse(TextBox3.Text).ToString("M/d/yyyy"));
    方法,这方法挺不错的。我把后面的数据改成数据库中的数据类型就可以了。
    不过我不知道boolean的通配符是什么????
      

  8.   

    你这种最好分层写开
    要不你看你添加参数好麻烦嘛支持以上观点,你输入的时间内容与数据库里面的时间不匹配
    改成这样:
    DateTime.Parse(TextBox3.Text).ToString("M/d/yyyy")
      

  9.   

    顶.
    最后一个问题。
    boolean型的通配符是什么?