我正在尝试使用C#vs2012将文件上传到Oracle数据库。这是我第一次这样做,尤其是Oracle。我只是按照我在网上找到的一个例子,但在我运行代码之前我遇到了一些错误,这些代码告诉我某些类型或名称空间不存在。
我遵循的例子:Blob Example
以下是我在Resources_to_upload.aspx.cs中用红色加下划线的代码
objCmd
objConn
我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OracleClient;
using System.Configuration;
using System.Data;
using System.IO;
using System.Text;
public partial class Resources_to_upload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void cmdUpload_Click(object sender, EventArgs e)
{
try
{
if (fileUploadDocument.PostedFile.ContentLength > 0)
{
// Get the File name and Extension
string FileName = Path.GetFileName(fileUploadDocument.PostedFile.FileName);
string FileExtension = Path.GetExtension(fileUploadDocument.PostedFile.FileName);
//
// Extract the content of the Document into a Byte array
int intlength = fileUploadDocument.PostedFile.ContentLength;
Byte[] byteData = new Byte[intlength];
fileUploadDocument.PostedFile.InputStream.Read(byteData, 0, intlength);
//
// Save the file to the DB
string strConn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
object Conn = new OracleConnection(strConn);
//
StringBuilder strQueryBuilder = new StringBuilder("INSERT INTO RESOURCES(RESOURCES_ID, FILE_NAME, TYPE, RESOURCE_FILE) VALUES (");
strQueryBuilder.Append("'1', ");
strQueryBuilder.Append("'" + FileName + "', ");
strQueryBuilder.Append("'" + FileExtension + "', ");
strQueryBuilder.Append(" :RESOURCE_FILE)");
String strQuery = strQueryBuilder.ToString();
//
OracleParameter blobParameter = new OracleParameter();
blobParameter.ParameterName = "Resources_FILE";
blobParameter.OracleType = OracleType.Blob;
blobParameter.Direction = ParameterDirection.Input;
blobParameter.Value = byteData;
objCmd = new OracleCommand(strQuery, objConn);
objCmd.Parameters.Add(blobParameter);
//
objConn.Open();
objCmd.ExecuteNonQuery();
objConn.Close();
//
lblMsg.Text = "Document Uploaded Succesfully";
}
}
catch (Exception ex)
{
lblMsg.Text = " Error uploading Document: " + ex.Message.ToString();
}
}
}
请帮助解决此问题。谢谢
答案 0 :(得分:0)
StringBuilder
位于System.Text
命名空间中。所以你可以明确地引用它:
System.Text.StringBuilder strQueryBuilder ...
或者在文件中添加using
指令:
using System.Text
...
StringBuilder strQueryBuilder ...
对于objCmd
和objConn
,您在哪里定义?它们不是在您发布的代码中创建的。您可以在此处创建连接对象:
object Conn = new OracleConnection(strConn);
也许您的意思是使用Conn
代替objConn
?但是你不能在任何地方创建一个命令对象。您需要先声明并实例化变量,然后才能使用它们。