我是mongoDB的新手,我想转换一个C#/ SQL Server Windows应用程序以使用MongoDB作为其数据库,我的程序从控制台捕获屏幕截图并将其转换为C#Image对象并将其插入Sql图片类型, 我的问题是我如何在MongoDB中做到这一点,我的图像很小, 我写了一个从sql读取的小程序并将其存储在MongoDB中,(在MongoDB中,SQL Image类型变为字符串),然后我从MongoDB中读取并尝试在图片框中显示它并且我在内存流上收到错误是错误:后面跟我的程序代码。 “参数无效。”
public partial class Form1 : Form
{
VideoEntities vid = new VideoEntities();
public Form1()
{
InitializeComponent();
connectToMongo();
}
public void connectToMongo()
{
Utilitys util = new Utilitys();
var con = "mongodb://127.0.0.1";
MongoClient client = new MongoClient(con);
var db = client.GetDatabase("Video");
ObjectResult<getFrame_Result> frame;
List<getFrame_Result> frameList;
frame = vid.getFrame(50604803);
frameList = frame.ToList();
string jsonStr = jsonStr = util.deserialze(frameList[0]);
// jsonStr = "{Frame:" + jsonStr + "}";
jsonStr = jsonStr.Replace("[", "{");
jsonStr = jsonStr.Replace("]", "}");
var frameCollection = db.GetCollection<BsonDocument>("Frame");
var oneFrame = BsonDocument.Parse(jsonStr);
frameCollection.InsertOne(oneFrame);
Byte[] data = new Byte[0];
var collection = db.GetCollection<BsonDocument>("Frame");
var filter = Builders<BsonDocument>.Filter.Eq("id", 50604803);
var result = collection.Find(filter).ToList();
string img = (string)result[0]["Frame"];
data = Encoding.ASCII.GetBytes(img);
MemoryStream mem = new MemoryStream(data);
pictureBox.Image = Image.FromStream(mem);
}
}
可以任何人帮忙吗?关于如何以正确的方式插入图像数据,以便它作为二进制数据进入?
答案 0 :(得分:1)
我终于开始工作,这是代码:
public partial class Form1 : Form
{
VideoEntities vid = new VideoEntities();
public Form1()
{
InitializeComponent();
connectToMongo();
}
public void connectToMongo()
{
Utilitys util = new Utilitys();
var con = "mongodb://127.0.0.1";
MongoClient client = new MongoClient(con);
var db = client.GetDatabase("Video");
ObjectResult<getFrame_Result> frame;
List<getFrame_Result> frameList;
frame = vid.getFrame(50604803);
frameList = frame.ToList();
**var frameCollection = db.GetCollection<getFrame_Result>("Frame");**
frameCollection.InsertOne(frameList[0]);
Byte[] data = new Byte[0];
var collection = db.GetCollection<BsonDocument>("Frame");
var filter = Builders<BsonDocument>.Filter.Eq("_id", 50604803);
var result = collection.Find(filter).ToList();
data = (Byte[]) result[0]["Frame"];
MemoryStream mem = new MemoryStream(data);
pictureBox.Image = Image.FromStream(mem);
}
}
更改在**之间**只是将get集合中的类型更改为我需要插入MongoDb的类,现在它插入了我可以获取并显示为图像的二进制数据