(转载)C# SQL SERVER image exe
转自:http://topic.csdn.net/u/20100118/18/24d45e2f-ccdc-49ce-96fe-a5da12fa8557.html
把一个Exe文件先保存到数据库中,然后再读取。
1.保存到数据库。
string destConnString = @"Data Source=" + System.Environment.CurrentDirectory + "\\App.sdf";
SqlCeConnection destConnection = new SqlCeConnection(destConnString);
destConnection.Open();
FileInfo fi = new FileInfo(Application.StartupPath + "/PDAS.exe");
FileStream fs = fi.OpenRead();
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
SqlCeCommand cm = new SqlCeCommand();
cm.Connection = destConnection;
cm.CommandType = CommandType.Text;
cm.CommandText = "insert into pupdate (exme) values(@file)";
SqlCeParameter spFile = new SqlCeParameter("@file", SqlDbType.Image);
spFile.Value = bytes;
cm.Parameters.Add(spFile);
cm.ExecuteNonQuery();
MessageBox.Show("insert into success!");
destConnection.Close();
2。读取image,也是通过Byte[],电脑和PDA的取法有点不一样,因为PDA的File没有WriteAllBytes方法。
a.电脑的取法:
string destConnString = @"Data Source=" + System.Environment.CurrentDirectory + "\\App.sdf";
SqlCeConnection destConnection = new SqlCeConnection(destConnString);
destConnection.Open();
SqlCeCommand sqlBComm = new SqlCeCommand("select exme from pupdate", destConnection);
byte[] buffer;
buffer = (byte[])sqlBComm.ExecuteScalar();
File.WriteAllBytes("PDAS.EXE", buffer);
MessageBox.Show("insert into success!");
b.PDA的取:
string destConnString = @"Data Source=\App.sdf";
SqlCeConnection destConnection = new SqlCeConnection(destConnString);
destConnection.Open();
SqlCeCommand sqlBComm = new SqlCeCommand("select exme from pupdate", destConnection);
byte[] buffer;
buffer = (byte[])sqlBComm.ExecuteScalar();
FileStream fileStream = new FileStream("\\My Documents\\PDAS.EXE", FileMode.Create);
Stream sm = fileStream;
int numBytesToWrite = buffer.Length;
int numBytesWrite = 0;
sm.Write(buffer, numBytesWrite, numBytesToWrite);
sm.Close();
MessageBox.Show("insert into success!");
destConnection.Close();
sql server的估计除了链接方式的问题,其他都是一样的。
浙公网安备 33010602011771号