using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Web.Configuration;public partial class filldefpasend : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void Button1_Click(object sender, EventArgs e)
    {        SqlConnection conn = new SqlConnection();
        ConnectionStringSettings connsetting = ConfigurationManager.ConnectionStrings["科研管理ConnectionString"];
        conn.ConnectionString = connsetting.ConnectionString;
        SqlCommand cmd = new SqlCommand("dbo.proc_itemmag_insert_deferpasueend", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        conn.Open();
        cmd.Parameters.Add(new SqlParameter("@项目名称", SqlDbType.NVarChar, 255, "this.项目名称.Text"));
        cmd.Parameters.Add(new SqlParameter("@操作类型", SqlDbType.TinyInt, 4, "this.操作类型.Text"));
        cmd.Parameters.Add(new SqlParameter("@申请时间", SqlDbType.DateTime, 10, "this.申请时间.Text"));
        cmd.Parameters.Add(new SqlParameter("@执行时间", SqlDbType.DateTime, 10, "this.执行时间.Text"));
        cmd.Parameters.Add(new SqlParameter("@结题审核结论", SqlDbType.TinyInt, 4, "this.结题审核结论.Text"));
        cmd.Parameters.Add(new SqlParameter("@备注", SqlDbType.NVarChar, 255, "this.TextBox1.Text"));
        cmd.Parameters.Add(new SqlParameter("@状态", SqlDbType.TinyInt, 4, "this.状态.Text"));
        cmd.Parameters.Add(new SqlParameter("@填表人ID", SqlDbType.Int, 4, "this.填表人ID.Text"));
        cmd.Parameters.Add(new SqlParameter("@填表时间", SqlDbType.DateTime, 10, "this.填表时间.Text"));
        cmd.Parameters["@项目名称"].Value = this.项目名称.Text;
        cmd.Parameters["@操作类型"].Value = this.操作类型.Text;
        cmd.Parameters["@申请时间"].Value = this.申请时间.Text;
        cmd.Parameters["@执行时间"].Value = this.执行时间.Text;
        cmd.Parameters["@结题审核结论"].Value = this.结题审核结论.Text;
        cmd.Parameters["@备注"].Value = this.TextBox1.Text;
        cmd.Parameters["@状态"].Value =0;
        cmd.Parameters["@填表人ID"].Value = 33;
        cmd.Parameters["@填表时间"].Value = DateTime.Now.Date;
        SqlDataReader dr = cmd.ExecuteReader();///运行时这里出现错误,说string转换为byte失败        conn.Close();
    }
}

解决方案 »

  1.   

    cmd.Parameters.Add(new SqlParameter("@操作类型", SqlDbType.TinyInt, 4, "this.操作类型.Text")); 
    cmd.Parameters.Add(new SqlParameter("@申请时间", SqlDbType.DateTime, 10, "this.申请时间.Text")); 
    cmd.Parameters.Add(new SqlParameter("@执行时间", SqlDbType.DateTime, 10, "this.执行时间.Text")); cmd.Parameters["@操作类型"].Value = this.操作类型.Text; 
    cmd.Parameters["@申请时间"].Value = this.申请时间.Text; 
    cmd.Parameters["@执行时间"].Value = this.执行时间.Text; 你都不转换,把string类型的值传进去当然不行了 
      

  2.   

    你传的都是string类型,有的是时间,有的是数字,注意看.value的提示属性来赋值
      

  3.   

    需要的是byte类型而你传入的是string类型
      

  4.   

    可能你把数据库表中的某些字段设为byte类型了吧
      

  5.   

            SqlConnection conn = new SqlConnection(); 
            ConnectionStringSettings connsetting = ConfigurationManager.ConnectionStrings["科研管理ConnectionString"]; 
            conn.ConnectionString = connsetting.ConnectionString; 
            SqlCommand cmd = new SqlCommand("dbo.proc_itemmag_insert_deferpasueend", conn); 
            cmd.CommandType = CommandType.StoredProcedure; 
            cmd.Parameters.AddWithValue("@项目名称", this.项目名称.Text); 
            cmd.Parameters.AddWithValue("@操作类型", this.操作类型.Text);
            cmd.Parameters.AddWithValue("@申请时间", this.申请时间.Text);
            cmd.Parameters.AddWithValue("@执行时间", this.执行时间.Text);
            cmd.Parameters.AddWithValue("@结题审核结论", this.结题审核结论.Text);
            cmd.Parameters.AddWithValue("@备注", this.TextBox1.Text);
            cmd.Parameters.AddWithValue("@状态", this.状态.Text);
            cmd.Parameters.AddWithValue("@填表人ID", this.填表人ID.Text);
            cmd.Parameters.AddWithValue("@填表时间", this.填表时间.Text); 
            conn.Open(); 
            SqlDataReader dr = cmd.ExecuteReader();
            //如果要执行插入应该是cmd.ExecuteNonQuery();
            conn.Close(); 
      

  6.   

    转换之后又出现:为过程或函数 proc_itemmag_insert_deferpasueend 指定了过多的参数。
    这个问题
      

  7.   

    用int型 Convert.ToInt32(); 日期型: Convert.ToDateTime()等