当所有要插入的数据都填写时插入没有问题,如果有空值,则出现"参数化查询 '(@Titles nvarchar(8),@Contents nvarchar(6),@Author nvarchar(4000' 需要参数 @Author,但未提供该参数。"的错误!
请大家看看我的代码 public static int InsertNews(string Titles, string Author, string Source, bool Pic, string PicUrl, string Species, bool UpFile, string FileUrl, string Contents)
      {
          string connectionString = ConfigurationManager.ConnectionStrings["dataWeb"].ConnectionString;
          System.Data.IDbConnection dbConnection = new System.Data.SqlClient.SqlConnection(connectionString);
          string commandString = "INSERT INTO [News] ([Titles],[Contents],[Author],[Source],[Pic],[PicUrl],[Species],[UpFile],[FileUrl]) Values (@Titles,@Contents,isnull(@Author,''),isnull(@Source,''),@Pic,isnull(@PicUrl,''),@Species,@UpFile,isnull(@FileUrl,''))";
          System.Data.IDbCommand dbCommand = new System.Data.SqlClient.SqlCommand();          dbCommand.CommandText = commandString;
          dbCommand.Connection = dbConnection;          System.Data.IDataParameter dbParam_Titles = new System.Data.SqlClient.SqlParameter();          dbParam_Titles.ParameterName = "@Titles";
          dbParam_Titles.Value = Titles;
          dbParam_Titles.DbType = System.Data.DbType.String;       
          dbCommand.Parameters.Add(dbParam_Titles);          System.Data.IDataParameter dbParam_Contents = new System.Data.SqlClient.SqlParameter();          dbParam_Contents.ParameterName = "@Contents";
          dbParam_Contents.Value = Contents;         
          dbParam_Contents.DbType = System.Data.DbType.String;          
          dbCommand.Parameters.Add(dbParam_Contents);          System.Data.IDataParameter dbParam_Author = new System.Data.SqlClient.SqlParameter();          dbParam_Author.ParameterName = "@Author";
          dbParam_Author.Value = Author;
          dbParam_Author.DbType = System.Data.DbType.String;          
          dbCommand.Parameters.Add(dbParam_Author);          
        
          System.Data.IDataParameter dbParam_Source=new System.Data.SqlClient.SqlParameter();          dbParam_Source.ParameterName="@Source";
          dbParam_Source.Value = Source;         
          dbParam_Source.DbType=System.Data.DbType.String;          
          dbCommand.Parameters.Add(dbParam_Source);
          
          System.Data.IDataParameter dbParam_Pic = new System.Data.SqlClient.SqlParameter();          dbParam_Pic.ParameterName = "@Pic";
          dbParam_Pic.Value = Pic;
          dbParam_Pic.DbType = System.Data.DbType.Boolean;          
          dbCommand.Parameters.Add(dbParam_Pic);          System.Data.IDataParameter dbParam_PicUrl = new System.Data.SqlClient.SqlParameter();          dbParam_PicUrl.ParameterName = "@PicUrl";          
          dbParam_PicUrl.Value = PicUrl;          
          dbParam_PicUrl.DbType = System.Data.DbType.String;          
          dbCommand.Parameters.Add(dbParam_PicUrl);          System.Data.IDataParameter dbParam_Species = new System.Data.SqlClient.SqlParameter();          dbParam_Species.ParameterName = "@Species";
          dbParam_Species.Value = Species;
          dbParam_Species.DbType = System.Data.DbType.String;          
          dbCommand.Parameters.Add(dbParam_Species);          System.Data.IDataParameter dbParam_UpFile = new System.Data.SqlClient.SqlParameter();          dbParam_UpFile.ParameterName = "@UpFile";
          dbParam_UpFile.Value = UpFile;
          dbParam_UpFile.DbType = System.Data.DbType.Boolean;          
          dbCommand.Parameters.Add(dbParam_UpFile);          System.Data.IDataParameter dbParam_FileUrl = new System.Data.SqlClient.SqlParameter();          dbParam_FileUrl.ParameterName = "@FileUrl";         
          dbParam_FileUrl.Value = FileUrl;          
          dbParam_FileUrl.DbType = System.Data.DbType.String;          
          dbCommand.Parameters.Add(dbParam_FileUrl);          int rowsAffected = 0;          dbConnection.Open();
          try
          {
              rowsAffected = dbCommand.ExecuteNonQuery();
          }
          finally
          {
              dbConnection.Close();
          }
          return rowsAffected;
      }