各位高手帮帮忙解决,谢谢!!
MYSQL库:
CREATE TABLE `mypicture` (
  `sTitle` varchar(50) default NULL,
  `maxPic` longblob,
  `fl` varchar(50) default NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;存储过程:
CREATE PROCEDURE `MySQLinsert`(IN param1 VARCHAR(50),IN param2 LONGBLOB)
    DETERMINISTIC
    SQL SECURITY INVOKER
    COMMENT ''
INSERT INTO `mypicture`(sTitle,maxPic,fl) VALUES(@param1,@param2,'A');C#代码:
string constr = "User Id=root;Host=27.0.0.1;Database=mypic;password=abc;
MySqlConnection conn = new MySqlConnection(constr);try
{
byte[] FileData;
FileStream fso;
fso =File.OpenRead(this.textBox2.Text);
FileData = new byte[fso.Length];
fso.Read(FileData,0,(int)fso.Length);
MySqlCommand mycm=new MySqlCommand("MySQLinsert",conn);
mycm.CommandType=CommandType.StoredProcedure;
          MySqlParameter param2 = new MySqlParameter("param1",MySqlDbType.VarChar,30);
param2.Value = "ddddddddd";
mycm.Parameters.Add(new MySqlParameter("maxpic",MySqlDbType.LongBlob));
mycm.Parameters["@maxpic"].Value=FileData; conn.Open();
mycm.ExecuteNonQuery();
mycm.Dispose();
fso.Close();
            conn.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message); }以上代码执行后,在MYSQL已播放一条新数据,但sTitle,maxPic两个字段都为空,请问错在哪里??????????????

解决方案 »

  1.   

    调用的时候去掉长度和类型限制,看看是否可以,其次,虽说参数三为default,但是调用的时候还是要加上这个参数。
      

  2.   

    回复楼上,字符长度可以去掉但是还是不行,参数三为default加上也不行,还有其他方法吗???
      

  3.   

    MySqlParameter param2 = new MySqlParameter("param1",MySqlDbType.VarChar,30);
    param2.Value = "ddddddddd";
    mycm.Parameters.Add(new MySqlParameter("maxpic",MySqlDbType.LongBlob));
    mycm.Parameters["@maxpic"].Value=FileData;conn.Open();
    mycm.ExecuteNonQuery();
    =======================================
    以上,对于param2参数,你只声明,却没有添加到mycm.Parameters中,所以对于mycm.Parameters来说,它只有一个参数maxpic,所以在执行的时候,存储过程只接收了一个参数,并且它的序号为0,赋予了你存储过程的第一个变量,导致变量不合法,未生效,而没有第二个参数,所以为空,也就导致最终你看到的结果!
      

  4.   

    你好,我修改后代码如下,还是不行
    MySqlCommand mycm=new MySqlCommand("MySQLinsert",conn);
    mycm.CommandType=CommandType.StoredProcedure;
    mycm.Parameters.Add(new MySqlParameter("param1",MySqlDbType.VarChar,30));
    mycm.Parameters["param1"].Value="aa123"; mycm.Parameters.Add(new MySqlParameter("param2",MySqlDbType.LongBlob));
    mycm.Parameters["param2"].Value=FileData;
      

  5.   

    mySQL 能存blob或clob的东西吗