SQL语句如下:
INSERT INTO t_bse_Manufacture (Code,FactoryNo,Manufactures,ClientNo,ClientBarNo,Client,EnMedName,ChMedName,EnSpec,ChSpec,EnPack,ChPack,FactoryPrice,CoinUnit,OutPack,MiPack,GrossWeight,Suttle,CountChUnit,CountEnUnit,SizeW,SizeA,SizeH,PubliBulk,EnBulk,R,MedType,Shipment1,Shipment2,[20Capability],[40Capability],[40HQCapability],CIQCode,OtherSign,ModifiTime,barCode) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)但总是提示:System.Data.SqlClient.SqlException: 第 1 行: '?' 附近有语法错误。真想不明白,有路过的朋友请帮帮忙,谢谢.

解决方案 »

  1.   

    TO:但总是提示:System.Data.SqlClient.SqlException: 第 1 行: '?' 附近有语法错误。
    你将?改成"@para"的形式...
      

  2.   

    for example:SqlCommand cmd=new SqlCommand("insert into student values(@Sno,Sname,Sage)",con);
    cmd.Parameters.AddWithValue("@Sno","111");
    cmd.Parameters.AddWithValue("@Sname","aa");
    cmd.Parameters.AddWithValue("@Sage",21);
    cmd.ExecuteNonQuery();
      

  3.   

    在OleDb方式下用"?"你用的SqlClient,应该用"@参数名"形式...have a try...
      

  4.   

    再请教下楼上的,如果我想支持"?"号,应该怎样做?
    代码如下SQLSERVER数据库
                    using (SqlConnection connection = new SqlConnection(p_strConnectionString))
                    {
                        connection.Open();
                        SqlCommand cmd = new SqlCommand(p_strSQL, connection);
                        for (int i = 0; i < p_Params.Length; i++)
                            cmd.Parameters.Add((SqlParameter)p_Params[i]);
                        cmd.CommandTimeout = 300;
                        p_lngRecordsAffected = cmd.ExecuteNonQuery();
                        connection.Close();
                    }
      

  5.   

    因为我想做一个比较通用的也就是我想SQL语句可以同时运行在ACCESS\Oracle\SQLServer上,为了改变数据库时,不需要修改SQL语句
      

  6.   

    那你就用OleDb方式吧...即使用OleDbConnection,OleDbCommand....这样用的话,基本上就是OleDbConnection的写法不一样,即连接字符串有点差别,别的基本都差不多..