请问怎么把RichTextBox 中的数据和格式一起存在Sql Server 中,和如何读出显示到RichTextBox

解决方案 »

  1.   

    保存: private void btnSave_Click(object sender, System.EventArgs e) 
    { FileStream stream = null; 
    SqlConnection conn = null; 
    SqlCommand cmd = null; 
    try 

    richTextBox1.SaveFile( "temp.rtf" ); 
    stream = new FileStream("temp.rtf", FileMode.Open, FileAccess.Read); 
    int size = Convert.ToInt32(stream.Length); 
    Byte[] rtf = new Byte[size]; 
    stream.Read(rtf, 0, size); conn = new SqlConnection("Database=Northwind;Integrated Security=true;"); 
    conn.Open(); 
    cmd = new SqlCommand("UPDATE Employees SET Photo=@Photo WHERE EmployeeID=1", conn); SqlParameter paramRTF = 
    new SqlParameter("@Photo", 
    SqlDbType.Image, 
    rtf.Length, 
    ParameterDirection.Input, 
    false, 
    0,0,null, 
    DataRowVersion.Current, 
    rtf); 
    cmd.Parameters.Add(paramRTF); int rowsUpdated = Convert.ToInt32(cmd.ExecuteNonQuery()); MessageBox.Show(String.Format("{0} rows updated", rowsUpdated)); 

    catch(Exception ex) 

    MessageBox.Show(ex.Message); 

    finally 

    if ( stream != null ) stream.Close(); 
    if (cmd != null ) cmd.Parameters.Clear(); 
    if (conn != null) conn.Close(); 

    } 读取: private void btnLoad_Click(object sender, System.EventArgs e) 

    richTextBox1.Clear(); SqlConnection cn = null; 
    SqlCommand cmd = null; 
    SqlDataReader reader = null; 
    try 

    cn = new SqlConnection("Database=Northwind;Integrated Security=true;"); 
    cn.Open(); 
    cmd = new SqlCommand("SELECT Photo FROM Employees WHERE EmployeeID=1", cn); 
    reader = cmd.ExecuteReader(); 
    reader.Read(); 
    if (reader.HasRows) 

    if (!reader.IsDBNull(0)) 

    Byte[] rtf = new Byte[Convert.ToInt32((reader.GetBytes(0, 0, null, 0, Int32.MaxValue)))]; 
    long bytesReceived = reader.GetBytes(0, 0, rtf, 0, rtf.Length); ASCIIEncoding encoding = new ASCIIEncoding(); 
    richTextBox1.Rtf = encoding.GetString(rtf, 0, Convert.ToInt32(bytesReceived)); 



    catch(Exception ex) 

    MessageBox.Show(ex.Message); 

    finally 

    if (reader != null ) reader.Close(); 
    if (cn != null ) cn.Close(); 
    } }