我写过一个,不过是写sqlserver的,你改改连接串就可以了。我用的是oledb,应该不会有大问题。我的email:[email protected]

解决方案 »

  1.   

    private void btnSave_Click(object sender, System.EventArgs e)
    {
    if(ofd.ShowDialog()==DialogResult.OK)
    {
    //txtPath.Text=ofd.FileName;
    int kzm=ofd.FileName.LastIndexOf(".");
    int wjm=ofd.FileName.LastIndexOf(@"\");
    //MessageBox.Show("文件名:"+ofd.FileName.Substring(wjm+1,kzm-wjm-1)+"    扩展名是:"+ofd.FileName.Substring(kzm+1,ofd.FileName.Length-kzm-1));
    txtATTFN.Text=ofd.FileName.Substring(wjm+1,kzm-wjm-1);
    txtATTType.Text=ofd.FileName.Substring(kzm+1,ofd.FileName.Length-kzm-1);
    fs=new FileStream(ofd.FileName,System.IO.FileMode.Open ,System.IO.FileAccess.Read);
    txtFileSize.Text =fs.Length.ToString();
    txtFdate.Text=System.DateTime.Today.ToShortDateString();//.ToString("yyyy-MM-dd");
    MessageBox.Show("请填写附件描述后,按'保存附件'按钮!","添加附件",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
             
    }
    this.btnSave.Enabled=true; } private void btnSave_Click_1(object sender, System.EventArgs e)
    {
    byte[] fb = new byte[fs.Length];
    fs.Read(fb,0,fb.Length);
    System.Data.OleDb.OleDbCommand cmd =new System.Data.OleDb.OleDbCommand();            cmd.CommandText=@"INSERT INTO tblFujian(fileName, ContentType, fileDes, fileDate, ContentLength, accName, username, ImageBinary) VALUES (?, ?, ?, ?, ?, ?, ?, ?); SELECT ID AS 附件编号, fileName AS 文件名, ContentType AS 文件类型, fileDes AS 附件描述, fileDate AS 最后更新时间, ContentLength AS 文件长度, accName AS 客户名称, username AS 用户, ImageBinary AS 附件内容 FROM tblFujian WHERE (ID = @@IDENTITY)";

    System.Data.OleDb.OleDbParameter p1=new System.Data.OleDb.OleDbParameter("fileName", System.Data.OleDb.OleDbType.VarWChar, 50, "文件名");
    p1.Value=txtATTFN.Text.Trim();
    System.Data.OleDb.OleDbParameter p2=new System.Data.OleDb.OleDbParameter("ContentType", System.Data.OleDb.OleDbType.VarChar, 25, "文件类型");
    p2.Value =txtATTType.Text ;
    System.Data.OleDb.OleDbParameter p3=new System.Data.OleDb.OleDbParameter("fileDes", System.Data.OleDb.OleDbType.VarChar, 50, "附件描述");
    p3.Value=rtFileDes.Text ;
    System.Data.OleDb.OleDbParameter p4=new System.Data.OleDb.OleDbParameter("fileDate", System.Data.OleDb.OleDbType.VarChar, 10, "最后更新时间");
    p4.Value=txtFdate.Text ;
    System.Data.OleDb.OleDbParameter p5=new System.Data.OleDb.OleDbParameter("ContentLength", System.Data.OleDb.OleDbType.BigInt, 8, "文件长度");
    p5.Value=int.Parse(txtFileSize.Text);
                System.Data.OleDb.OleDbParameter p6=new System.Data.OleDb.OleDbParameter("accName", System.Data.OleDb.OleDbType.VarChar, 50, "客户名称");
    p6.Value=this.myAccName ;
    System.Data.OleDb.OleDbParameter p7=new System.Data.OleDb.OleDbParameter("username", System.Data.OleDb.OleDbType.VarChar, 10, "用户");
    p7.Value=this.frm.username ;//txtuser.Text ;
    System.Data.OleDb.OleDbParameter p8=new System.Data.OleDb.OleDbParameter("ImageBinary",System.Data.OleDb.OleDbType.VarBinary,2147483647,"附件内容");
    p8.Value=fb;


    cmd.Parameters.Add(p1);
    cmd.Parameters.Add(p2);
    cmd.Parameters.Add(p3);
    cmd.Parameters.Add(p4);
    cmd.Parameters.Add(p5);
    cmd.Parameters.Add(p6);
    cmd.Parameters.Add(p7);
    cmd.Parameters.Add(p8);

    cmd.Connection=this.kconn;
    //conn.Open();
    try
    {
    cmd.ExecuteNonQuery();
    //conn.Close();
    MessageBox.Show("附件已经保存入数据库中!","Esse CRM",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
    try
    {
    this.ds_att.Clear();
    this.da_att.Fill(this.ds_att,"att");
    }
    catch(Exception err)
    {
    MessageBox.Show("发生错误!错误内容为:"+err.Message ,"发生错误",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error );
    }
    }
    catch(Exception err)
    {
    MessageBox.Show("发生错误!错误内容为:"+err.Message ,"发生错误",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error );
    }
                this.btnSave.Enabled=false; }
    我这个程序是要填写一些关于文件的说明,所以要分成两个按钮,你改成一个就行了,区分文件的文件名和扩展名是为了读取时用的,你可以去掉。别忘了给分!
      

  2.   

    使用fileinput控件
    使用stream读取道byte[]然后把byte[]存到数据库
      

  3.   

    to  xhan2000(popeye.net) 
    请写详细代码!!!
      

  4.   

    http://expert.csdn.net/Expert/topic/1306/1306690.xml?temp=.1799585我原来存的是图片
    你稍改一下就可以实现你的功能了要的话到上面留言,写下你的mail