logo

将文字内容和图片插入到 Access 数据库

作者:孟宪会 阅读:11593 发表于:2006-04-21 19:43:10

鉴于问的人较多,先贴出代码

ASPX 代码
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  protected
void Button1_Click(object sender, EventArgs e)
  {
    
//得到文件数组
    byte[] fileData = FileUpload1.FileBytes;
    
//得到文件大小
    int fileLength = FileUpload1.PostedFile.ContentLength;
    
//得到文件名字
    string fileName = FileUpload1.FileName;

    
//得到文件类型
    string fileType = FileUpload1.PostedFile.ContentType;

    
//构建数据库连接,SQL语句,创建参数
    string strCnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Image2Access.mdb";
    System.Data.OleDb.OleDbConnection myConnection
= new System.Data.OleDb.OleDbConnection(strCnString);
    String strSql
= "INSERT INTO Person (PersonName,PersonImageType,PersonImageFileName,PersonImageSize,PersonImage)" +
                    
"VALUES (@PersonName,@PersonImageType,@PersonImageFileName,@PersonImageSize,@PersonImage)";
    System.Data.OleDb.OleDbCommand command
= new System.Data.OleDb.OleDbCommand(strSql, myConnection);
    command.Parameters.AddWithValue(
"@PersonName", TextBox1.Text);
    command.Parameters.AddWithValue(
"@PersonImageType", fileType);
    command.Parameters.AddWithValue(
"@PersonImageFileName", fileName);
    command.Parameters.AddWithValue(
"@PersonImageSize", fileLength);
    command.Parameters.AddWithValue(
"@PersonImage", fileData);
    
    
//打开连接,执行查询
    myConnection.Open();
    command.ExecuteNonQuery();
    myConnection.Close();
    Response.Redirect(Request.FilePath);
  }

  protected
void Page_Load(object sender, EventArgs e)
  {
    
//显示图片:
    //构建数据库连接,SQL语句,创建参数
    string strCnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Image2Access.mdb";
    System.Data.OleDb.OleDbConnection myConnection
= new System.Data.OleDb.OleDbConnection(strCnString);
    String strSql
= "select * from Person";
    System.Data.OleDb.OleDbCommand command
= new System.Data.OleDb.OleDbCommand(strSql, myConnection);
    
//打开连接,执行查询
    myConnection.Open();
    System.Data.OleDb.OleDbDataReader dr
= command.ExecuteReader();
    GridView1.DataSource
= dr;
    GridView1.DataBind();    
    myConnection.Close();
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  
<title></title>
</head>
<body>
  
<form id="form1" runat="server">
  输入文字:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  
<asp:FileUpload ID="FileUpload1" runat="server" />
  
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传文字和图片" />
  
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
  
<Columns>
  
<asp:BoundField DataField="PersonName" />
  
<asp:ImageField DataImageUrlField="PersonId" DataImageUrlFormatString="ShowImage.aspx?id={0}"/>  
  
</Columns>
  
</asp:GridView>
  
</form>
</body>
</html>

显示图片

ShowImage.aspx 代码
<%@ Page Language="C#" %>

<script runat="server">

  protected
void Page_Load(object sender, EventArgs e)
  {
    
int id = 0;
    
if (Int32.TryParse(Request.QueryString["id"], out id))
    {
      string strCnString
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Image2Access.mdb";
      System.Data.OleDb.OleDbConnection myConnection
= new System.Data.OleDb.OleDbConnection(strCnString);
      String strSql
= "select PersonImageType,PersonImage from Person Where PersonId=@id";
      System.Data.OleDb.OleDbCommand command
= new System.Data.OleDb.OleDbCommand(strSql, myConnection);
      command.Parameters.AddWithValue(
"@id", id);
      
//打开连接,执行查询
      myConnection.Open();
      System.Data.OleDb.OleDbDataReader dr
= command.ExecuteReader();
      
if (dr.Read())
      {
        
byte[] image = (byte[])dr["PersonImage"];
        Response.ClearContent();
        Response.ContentType
= dr["PersonImageType"].ToString();
        Response.BinaryWrite(image);
        Response.End();
      }
      
else
      {
        OutPutNonePicture();
      }
      dr.Close();
      myConnection.Close();
      myConnection.Dispose();
    }
    
else
    {
    OutPutNonePicture();
    }
  }

  
/// <summary>
  /// 对于不存在的图片,输出none.gif
  /// </summary>
  private void OutPutNonePicture()
  {
    Response.ClearContent();
    Response.ContentType
= "image/gif";
    Response.WriteFile(Server.MapPath(
"~/none.gif"));
    Response.End();
  }
</script>

VB.NET版本

ASPX 代码
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    
'得到文件数组
    Dim fileData As Byte() = FileUpload1.FileBytes
    
'得到文件大小
    Dim fileLength As Integer
= FileUpload1.PostedFile.ContentLength
    
'得到文件名字
    Dim fileName As String = FileUpload1.FileName

    
'得到文件类型
    Dim fileType As String
= FileUpload1.PostedFile.ContentType

    
'构建数据库连接,SQL语句,创建参数
    Dim strCnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Image2Access.mdb"
    Dim myConnection As New System.Data.OleDb.OleDbConnection(strCnString)
    Dim strSql As String = "INSERT INTO Person (PersonName,PersonImageType,PersonImageFileName,PersonImageSize,PersonImage)" & _
                           "VALUES (@PersonName,@PersonImageType,@PersonImageFileName,@PersonImageSize,@PersonImage)"
    Dim command As New System.Data.OleDb.OleDbCommand(strSql, myConnection)
    command.Parameters.AddWithValue("@PersonName", TextBox1.Text)
    command.Parameters.AddWithValue("@PersonImageType", fileType)
    command.Parameters.AddWithValue("@PersonImageFileName", fileName)
    command.Parameters.AddWithValue("@PersonImageSize", fileLength)
    command.Parameters.AddWithValue("@PersonImage", fileData)

    
'打开连接,执行查询
    myConnection.Open()
    command.ExecuteNonQuery()
    myConnection.Close()
    Response.Redirect(Request.FilePath)
  End Sub

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    
'显示图片:
    
'构建数据库连接,SQL语句,创建参数
    Dim strCnString As String
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Image2Access.mdb"
    Dim myConnection As New System.Data.OleDb.OleDbConnection(strCnString)
    Dim strSql As String
= "select * from Person"
    Dim command As New System.Data.OleDb.OleDbCommand(strSql, myConnection)
    
'打开连接,执行查询
    myConnection.Open()
    Dim dr As System.Data.OleDb.OleDbDataReader = command.ExecuteReader()
    GridView1.DataSource = dr
    GridView1.DataBind()
    myConnection.Close()
  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
</head>
<body>
  <form id="form1" runat="server">
  输入文字:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  <asp:FileUpload ID="FileUpload1" runat="server" />
  <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传文字和图片" />
  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
  <Columns>
  <asp:BoundField DataField="PersonName" />
  <asp:ImageField DataImageUrlField="PersonId" DataImageUrlFormatString="ShowImage.aspx?id={0}"/>  
  </Columns>
  </asp:GridView>
  </form>
</body>
</html>

显示图片

ShowImage.aspx 代码
<%@ Page Language="VB" %>

<script runat="server">
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    Dim id As Integer
= 0
    If Int32.TryParse(Request.QueryString(
"id"), id) Then
      Dim strCnString As String
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Image2Access.mdb"
      Dim myConnection As New System.Data.OleDb.OleDbConnection(strCnString)
      Dim strSql As [String]
= "select PersonImageType,PersonImage from Person Where PersonId=@id"
      Dim command As New System.Data.OleDb.OleDbCommand(strSql, myConnection)
      command.Parameters.AddWithValue(
"@id", id)
      
'打开连接,执行查询
      myConnection.Open()
      Dim dr As System.Data.OleDb.OleDbDataReader = command.ExecuteReader()
      If dr.Read() Then
        Dim image As Byte() = DirectCast(dr("PersonImage"), Byte())
        Response.ClearContent()
        Response.ContentType = dr("PersonImageType").ToString()
        Response.BinaryWrite(image)
        Response.End()
      Else
        OutPutNonePicture()
      End If
      dr.Close()
      myConnection.Close()
      myConnection.Dispose()
    Else
      OutPutNonePicture()
    End If
  End Sub

  
''' <summary>
  
''' 对于不存在的图片,输出none.gif
  
''' </summary>
  Private Sub OutPutNonePicture()
    Response.ClearContent()
    Response.ContentType
= "image/gif"
    Response.WriteFile(Server.MapPath(
"~/none.gif"))
    Response.End()
  End Sub

</script>

 

ASP 显示图片的代码
<%
Dim conn, rs, sql, cs
cs
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("Image2Access.mdb")
Set conn = Server.CreateObject("ADODB.connection")  
conn.Open cs
PersonID
= Trim(Request.QueryString("PersonID"))
If IsNumeric(PersonID) = False Then
Response.Write
"无效的id" '或者显示none.gif
Response.End
End If
sql
="select PersonImageType,PersonImage from Person where PersonID=" & PersonID
Set rs = conn.Execute(sql)
If rs.EOF Then
  Response.Write
"没有得到记录" '或者显示none.gif
Else
Response.Clear
Response.ContentType
= rs("PersonImageType")
Response.BinaryWrite rs.Fields(
"PersonImage").getChunk(rs.Fields("PersonImage").ActualSize)  
End If
rs.Close  
Set rs = Nothing  
Set conn = Nothing
Response.End
%
>