数据未永久保存在我的localdatabase中

时间:2014-07-21 14:33:39

标签: c# visual-studio-2010

我想知道为什么我的数据不能永久保存在我的本地数据库中。如果我关闭我的应用程序并再次打开它。我无法下载上传的数据。它显示一个名为&#34的错误;给定的密钥不在字典“中 但我可以在应用程序运行时下载该文件。我的意思是,如果应用程序正在运行并且我将数据上传到我的网格,那么下载它不会引发任何错误。如果应用程序已关闭并打开,那么当我尝试下载相同的旧文件时,它会抛出错误

我的代码

private void DownloadAttachment(DataGridViewCell dgvCell)
{
    string fileName = Convert.ToString(dgvCell.Value);

    //Return if the cell is empty
    if (fileName == string.Empty)
        return;

    FileInfo fileInfo = new FileInfo(fileName);
    string fileExtension = fileInfo.Extension;

    byte[] byteData = null;

    //show save as dialog
    using (SaveFileDialog saveFileDialog1 = new SaveFileDialog())
    {
        //Set Save dialog properties
        saveFileDialog1.Filter = "Files (*" + fileExtension + ")|*" + fileExtension;
        saveFileDialog1.Title = "Save File as";
        saveFileDialog1.CheckPathExists = true;
        saveFileDialog1.FileName = fileName;

        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value = fileInfo.Name;
            byteData = _myAttachments[dgvCell.RowIndex];
            File.WriteAllBytes(saveFileDialog1.FileName, byteData);
        }
    }
}

3 个答案:

答案 0 :(得分:0)

(后代)

听起来每次构建项目时都会重新复制数据文件。您需要调整项目设置,以便在需要时(由于结构更改等原因)不会覆盖数据文件。

This link应该可以帮助您正确设置项目。

答案 1 :(得分:0)

最后,我制作了一个自定义数据库,我将存储我上传的所有数据。感谢所有亲爱的朋友,他们指导我设置我的全新数据库..

答案 2 :(得分:0)

好的尝试一下,它将完美地工作。如果它是基于服务器的数据库,那么试试这个..

   string s = cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value.ToString();
   File.WriteAllBytes(saveFileDialog1.FileName, byteData);
   byteData = System.Text.Encoding.ASCII.GetBytes(s);

如果您使用的是本地数据库,请尝试以下代码。

SqlCeConnection cnn = new SqlCeConnection(Properties.Settings.Default.CncConnectionString);
            FileInfo fileInfo = new FileInfo(fileDialog.FileName);
            byte[] SqlTypeBlob = File.ReadAllBytes(fileDialog.FileName);
            cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value = fileInfo.Name;
            SqlCeCommand cmd = new SqlCeCommand("INSERT INTO CncInfo (Drawings) VALUES (@DATA)", cnn);
            cmd.Parameters.Add("@DATA", SqlDbType.VarBinary);
            cmd.Parameters["@DATA"].Value = SqlTypeBlob;
            cnn.Open();
            cmd.ExecuteNonQuery();
            cnn.Close();

如果还有其他什么呢

  byteData = _myAttachments[dgvCell.ColumnIndex];
  File.WriteAllBytes(saveFileDialog1.FileName, byteData);

如果有效,请关闭此处并批准我点击我的答案。和平!!!!!!!!