往Oracle数据库中导入图片时出现的ORA-01036:非法的变量名/编号

mayongself 2010-01-11 04:20:27
private void 添加图片_Click(object sender, EventArgs e)
{
openFileDialog1.InitialDirectory = Application.ExecutablePath;
openFileDialog1.Filter = "JPG Files(*.jpg)|*.jpg|All Files(*.*)|*.*";
openFileDialog1.FileName = "";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string strFileName = System.IO.Path.GetFileName(openFileDialog1.FileName);

theFile = openFileDialog1.FileName;
try
{
byte[] fileData = getBytes(theFile);
string ConnString = "Data Source=oracle_edubj;Persist Security Info=True;User ID=edubj;Password=edubj; Unicode=True";
string sql = "insert into dubj_info(学校图片,图片名称) values(@学校图片,'" + strFileName + "')";
int icount = listBox1.Items.Count;
listBox1.Items.Insert(icount, strFileName);
OracleConnection Conn = new OracleConnection(ConnString);
OracleCommand cmd = new OracleCommand(sql, Conn);


cmd.Parameters.Add("学校图片", OracleType.Blob);
cmd.Parameters["学校图片"].Value = fileData;
Conn.Open();
cmd.ExecuteNonQuery();
Conn.Close();
// this.pictureBox1.Image = convertByteToImg(getImageDataFromAcess());
listBox1.SelectedIndex = icount;
}
catch (Exception excep)
{
MessageBox.Show(excep.Message);
}
finally
{
}
}

}
public byte[] getBytes(string filePath)
{
System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite);
byte[] imgData = new byte[fs.Length];
fs.Read(imgData, 0, (int)fs.Length);
return imgData;
}
各位大侠给看看应该怎么改。
...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayongself 2010-01-11
  • 打赏
  • 举报
回复
我就是按照例子上那个写的。
cmd.Parameters.Add(":学校图片", OracleType.Blob )
这个里面的冒号不对,我没看仔细,但是我按照例子改完之后还是报错啊,提示无法将null插入指定的列。还有那个冒号就是美式拼音状态下的冒号,不是中文状态下的。
qldsrx 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mayongself 的回复:]
我按照你们说的
  string sql = "insert into dubj_info(学校图片,图片名称) values(:学校图片,'" + strFileName + "')";

cmd.Parameters.Add(":学校图片", OracleType.Blob
改完之后出现了OracleparameterCollection的count=1的索引-1无效什么意思。
[/Quote]
冒号必须是英文半角的那种,而不是中文下的冒号。
cmd.Parameters.Add后面不需要冒号,别人给的例子,你看仔细了没有啊。
mayongself 2010-01-11
  • 打赏
  • 举报
回复
我按照你们说的
string sql = "insert into dubj_info(学校图片,图片名称) values(:学校图片,'" + strFileName + "')";

cmd.Parameters.Add(":学校图片", OracleType.Blob
改完之后出现了OracleparameterCollection的count=1的索引-1无效什么意思。
notlikeGaoShou 2010-01-11
  • 打赏
  • 举报
回复
帮顶。呵呵
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jeffchung 的回复:]
Oracle的参数前面好像要加:
cmd.Parameters.Add(":param", OracleType.Blob);
[/Quote]
使用參數的時候SqlServer與Oralce的寫法不一樣
参考

OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["NEWOracleConn"].ToString());
OracleCommand cmd = new OracleCommand("UPDATE TUSER SET PHOTO=:photo WHERE userid=:id", conn);
Console.WriteLine(cmd.CommandText);
cmd.Parameters.Add("photo",OracleType.Blob);
cmd.Parameters["photo"].Value = photo;
cmd.Parameters.Add("id", OracleType.Number);
cmd.Parameters["id"].Value = id;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
xray2005 2010-01-11
  • 打赏
  • 举报
回复
Oracle与SQL SERVER 不一样;

应该是:

string sql = "insert into dubj_info(学校图片,图片名称) values( :学校图片,'" + strFileName + "')";
JeffChung 2010-01-11
  • 打赏
  • 举报
回复
Oracle的参数前面好像要加:
cmd.Parameters.Add(":param", OracleType.Blob);

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧