各位高手帮帮忙解决,谢谢!!
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两个字段都为空,请问错在哪里??????????????
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两个字段都为空,请问错在哪里??????????????
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,赋予了你存储过程的第一个变量,导致变量不合法,未生效,而没有第二个参数,所以为空,也就导致最终你看到的结果!
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;