这是我名为addNews的存储过程
CREATE  PROCEDURE dbo.AddNews
@publicDate datetime,
@source varchar (30) ,
@title varchar (100),
@content text,
@hits int,
@cat varchar (30)
 AS
insert news(publicDate,source,title,content,hits,cat)
values (@publicDate,@source,@title,@content,@hits,@cat)
GO
下面的是给参数赋的值public void AddNews(ArrayList tempary)//本函数用于新闻的添加,查找,删除等操作。
{
SqlConnection cn=new SqlConnection(strConn);
SqlCommand cmd=new SqlCommand("AddNews",cn);//下面两句调用名为AddNews存储过程
cmd.CommandType =CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@publicDate",SqlDbType.DateTime));
cmd.Parameters["@publicDate"].Value =tempary[0]; cmd.Parameters.Add(new SqlParameter("@source",SqlDbType.VarChar,30 ));
cmd.Parameters["@source"].Value =tempary[1];

cmd.Parameters.Add(new SqlParameter("@title",SqlDbType.VarChar,100));
cmd.Parameters["@title"].Value =tempary[2]; cmd.Parameters.Add(new SqlParameter("@content",SqlDbType.Text ));
cmd.Parameters["@content"].Value =tempary[3];

cmd.Parameters.Add(new SqlParameter("@picture",SqlDbType.VarChar,50));
cmd.Parameters["@picture"].Value =tempary[4]; cmd.Parameters.Add(new SqlParameter("@cat",SqlDbType.VarChar,50));
cmd.Parameters["@cat"].Value =tempary[5]; cmd.Parameters.Add(new SqlParameter("@hits",SqlDbType.Int));
    cmd.Parameters["@hits"].Value =0; try
{
cn.Open() ;
cmd.ExecuteNonQuery() ;
}
catch(System.Data.SqlClient.SqlException er)
{
throw new  Exception(er.Message);
}
finally
{
cmd.Dispose() ;
cn.Close() ;
}
                    }
我现在也还没有搞清楚ArrayList数组中的值是怎么样与Parameters的值相对应的,请个为英雄把小第解决一下麻烦,我是新新手。最好举些列子

解决方案 »

  1.   

    这个对应主要是看你的ArrayList 数组是怎么设计赋值的。
      

  2.   

    插入的时候不关数据类型的问题
    cmd.Parameters.Add("@publicDate",SqlDbType.Char).Value = tempary[0];
    照样能插入日期你尝试在查询分析器中输入 Exec AddNews '2006-4-11',...参数
    运行看能否插入,先确定是什么地方的问题
      

  3.   

    CREATE TABLE [news] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [title] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [source] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
    [publicDate] [datetime] NULL ,
    [content] [text] COLLATE Chinese_PRC_CI_AS NULL ,
    [cat] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
    [picture] [image] NULL ,
    [hits] [int] NOT NULL ,
     PRIMARY KEY  CLUSTERED 
    (
    [ID]
    )  ON [PRIMARY] 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
    这是我的NEWS数据库,新手急啊,毕业设计时间不多了,
      

  4.   


    cmd.Parameters.Add(new SqlParameter("@publicDate",SqlDbType.DateTime));
    cmd.Parameters["@publicDate"].Value =tempary[0];
    这种操作方式改成如下
    cmd.Parameters.Add(new SqlParameter("@publicDate",tempary[0] );
    即可
      

  5.   

    在请问楼上的,是不是改成这样
    cmd.Parameters.Add(new SqlParameter("@publicDate",tempary[0])); cmd.Parameters.Add(new SqlParameter("@source",tempary[1]));


    cmd.Parameters.Add(new SqlParameter("@title",tempary[2]));
    cmd.Parameters.Add(new SqlParameter("@content",tempary[3] ));


    cmd.Parameters.Add(new SqlParameter("@picture",tempary[4]));
    cmd.Parameters.Add(new SqlParameter("@cat",tempary[5]));
    cmd.Parameters.Add(new SqlParameter("@hits",tempary[0]));
    tempary的值该怎么赋,我这样赋对吗。我想应该不对,所以还是插不进去,请帮我解决一下,20分感谢