当前位置:文档之家› 介绍如何将图片存入数据库

介绍如何将图片存入数据库

介绍如何将图片存入数据库
介绍如何将图片存入数据库

本实例主要介绍如何将图片存入数据库。将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中。主要代码如下:

private void button1_Click(object sender, EventArgs e)

{

openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";

if(openFileDialog1.ShowDialog()==DialogResult.OK)

{

string fullpath =openFileDialog1.FileName;//文件路径

FileStream fs = new FileStream(fullpath, FileMode.Open);

byte[] imagebytes =new byte[fs.Length];

BinaryReader br = new BinaryReader(fs);

imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));

//打开数据库

SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");

con.Open();

SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con);

com.Parameters.Add("ImageList", SqlDbType.Image);

com.Parameters["ImageList"].Value = imagebytes;

com.ExecuteNonQuery();

con.Close();

}

}

本实例主要介绍如何从数据库中把图片读出来。实现本实例主要是利用SqlDataReader从数据库中把Image字段值读出来,赋给一个byte[]字节数组,然后使用MemoryStream类与Bitmap把图片读取出来。主要代码如下:

private void button1_Click(object sender, EventArgs e)

{

byte[] imagebytes = null;

//打开数据库

SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");

con.Open();

SqlCommand com = new SqlCommand("select top 1* from tb_09", con);

SqlDataReader dr = com.ExecuteReader();

while (dr.Read())

{

imagebytes = (byte[])dr.GetValue(1);

}

dr.Close();

com.Clone();

con.Close();

MemoryStream ms = new MemoryStream(imagebytes);

Bitmap bmpt = new Bitmap(ms);

pictureBox1.Image = bmpt;

}

本实例主要介绍如何只允许输入指定图片格式。用OpenFileDialog控件打开图片文件,只要将OpenFileDialog控件的Filter属性指定为特定的图片格式即可。例如,打开.bmp文件的图片,主要代码如下:

this.openFileDialog1.Filter = "bmp文件(*.bmp)|*.bmp";

在用pictureBox控件输入图片时,要想统一图片大小,只需把控件的SizeMode属性值设为StretchImage即可,StretchImage值表示图像的大小将调整为控件的大小。这样,图片的大小就统一了。

上一页首页下一页

00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000

https://www.doczj.com/doc/51612823.html,下上传图片到数据库,并且读出图片

首先在SQL Server中建立一个图片存储的数库表,ImageData Column为图象二进制数据储存字段

,ImageContentType Column为图象文件类型记录字段,ImageDescription Column为储蓄图

象文件说明字段,ImageSize Column为储存图象文件长度字段,结构如下:

CREATE TABLE [dbo].[ImageStore] (

[ImageID] [int] IDENTITY (1, 1) NOT NULL ,

[ImageData] [image] NULL ,

[ImageContentType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[ImageDescription] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,

[ImageSize] [int] NULL

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

*/

//UpLoadImage.aspx程序内容如下:

<%@ Page Inherits="UploadImage.UploadImage" SRC="UpLoadImage.cs" Language="C#"%>

上传图片

上传图片(选择你要上传的图片)

ACCEPT="text/*" NAME="UP_FILE">

文件说明(添加上传图片说明,如:作者、出处)

MAINTAINSTATE="false" />

//-------------------------------------------------------------------

//UpLoadImage.cs程序内容如下:

using System;

using System.Web;

using System.IO;

using System.Data;

using System.Data.SqlClient;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

namespace UploadImage

{

public class UploadImage : Page

{

protected HtmlInputFile UP_FILE; //HtmlControl、WebControls控件对象protected TextBox txtDescription;

protected Label txtMessage;

protected Int32 FileLength = 0; //记录文件长度变量

protected void Button_Submit(System.Object sender, System.EventArgs e) {

HttpPostedFile UpFile = UP_FILE.PostedFile; //HttpPostedFile对象,用于读取图象文件属性

FileLength = UpFile.ContentLength; //记录文件长度

try {

if (FileLength == 0)

{ //文件长度为零时

txtMessage.Text = "请你选择你要上传的文件";

}

else

{

Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组

Stream StreamObject = UpFile.InputStream; //建立数据流对像

//读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth 为数据长度

StreamObject.Read(FileByteArray,0,FileLength);

//建立SQL Server链接

SqlConnection Con = new SqlConnection("Data Source=Localhost;Initial Catalog=testdb;User ID=sa;Pwd=;");

String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) valueS (@Image, @ContentType, @ImageDescription, @ImageSize)";

SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);

CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).value = FileByteArray;

CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar,50).value = UpFile.ContentType; //记录文件类型

//把其它单表数据记录上传

CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).value = txtDescription.Text;

//记录文件长度,读取时使用

CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).value = UpFile.ContentLength;

Con.Open();

CmdObj.ExecuteNonQuery();

Con.Close();

txtMessage.Text = "

OK!你已经成功上传你的图片";//提示上传成功

}

catch (Exception ex)

{

txtMessage.Text = ex.Message.ToString();

}

}

}

}

//----------------------------------------------------------------------

//好了,图片已经上传到数据库,现在还要干什么呢?当然是在数据库中读取及显示在Web 页中啦,

请看以下程序:

//ReadImage.aspx程序内容如下:

/-----------------------------------------------------------------------

<%@ Page Inherits="ReadImage.MainDisplay" SRC="ReadImage.cs"%>

//----------------------------------------------------------------------

//ReadImage.cs程序内容如下:

using System;

using System.Data;

using System.Data.SqlClient;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

namespace ReadImage {

public class MainDisplay : System.Web.UI.Page {

public void Page_Load(System.Object sender, System.EventArgs e) {

int ImgID = Convert.ToInt32(Request.QueryString["ImgID"]); //ImgID为图片ID

//建立数据库链接

SqlConnection Con = new SqlConnection("Data Source=KING;Initial

Catalog=testdb;User ID=sa;Pwd=;");

String SqlCmd = "SELECT * FROM ImageStore WHERE ImageID = @ImageID";

SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);

CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).value = ImgID;

Con.Open();

SqlDataReader SqlReader = CmdObj.ExecuteReader();

SqlReader.Read();

Response.ContentType = (string)SqlReader["ImageContentType"];//设定输出文件类型

//输出图象文件二进制数制

Response.OutputStream.Write((byte[])SqlReader["ImageData"], 0,

(int)SqlReader["ImageSize"]);

Response.End();

Con.Close();

//很简单吧^_^

}

}

}

//--------------------------------------------------------------------

//最后,我们当然要把它在Web页面显示出来啦

//ShowImage.hml

这个是从数据库读取出来的图象:

00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000

将图片插入数据库并使用https://www.doczj.com/doc/51612823.html,读取出来的正确方

作者:佚名文章来源:不详点击数:68 更新时间:2006-11-7

书写本文是因为今天见到CSDN的首页上一篇存在明显失误的名为“在https://www.doczj.com/doc/51612823.html,中从sqlserver检索(retrieve)图片”的文章。不说其错误是因为用其方法确实能从数据库中读取出图片并显示在浏览器,说其失误是因为代码的意图不能被完全的实现,作者也似乎对http协议以及浏览器在处理http数据的流程一知半解。

1、如何出错

以下是这片文章提到的方法:

Public Sub Page_Load(sender As Object, e As EventArgs)

Dim myConnection As New

SqlConnection(ConfigurationSettings.AppSettings("ConnectionString"))

Dim myCommand As New SqlCommand("Select * from Person", myConnection)

Try

myConnection.Open()

Dim myDataReader as SqlDataReader

myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)

Do While (myDataReader.Read())

Response.ContentType = myDataReader.Item("PersonImageType")

Response.BinaryWrite(myDataReader.Item("PersonImage"))

Loop

myConnection.Close()

Response.Write("Person info successfully retrieved!")

Catch SQLexc As SqlException

Response.Write("Read Failed : " & SQLexc.ToString())

End Try

End Sub

显然,编程者是想将Person表中所有的记录中的PersonImage字段所存储的图片一次性地输出到浏览器中,并且在输出成功地情况下在已输出的图片的下方打印出“Person info successfully retrieved!”信息。然而事实上上述代码仅仅能正确地输出第一条记录中的图片。对于浏览器来说,一个http请求获取一个文件(html或者图片),所以以上代码的输出将被作为一个文件(类型依据Response.ContentType = myDataReader.Item("PersonImageType")定)被浏览器处理。如果http相应的类型是image/jpeg之类的图片,则浏览器使用相应的图片解析功能对这一个图片文件进行解析。因此,上述代码的显示结果只能是第一条记录PersonImage字段的图片。后面的记录输出的图片数据将成为第一张图片的多余数据(此点具有普遍性,但并非绝对,依图片的格式而定),从而后面的“Person info successfully retrieved!”的信息也自然无法本显示出来,因为这些信息已经是图片文件里面的编码了。

2、正确的做法

A、将图片输入到数据库中,以下是一个将图片输入到数据库的代码片断:(完整的DEMO程序见附录一)

FileStream fs=File.OpenRead(filePath.Text);

byte[] content=new byte[fs.Length];

fs.Read(content, 0,content.Length);

fs.Close();

SqlConnection conn=new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DatabaseImage;Data Source=(local)");

conn.Open();

SqlCommand comm=conn.CreateCommand();

https://www.doczj.com/doc/51612823.html,mandText="insert into Images(Image, contentType) values(@image, @contentType)";

https://www.doczj.com/doc/51612823.html,mandType=CommandType.Text;

comm.Parameters.Add("@image", SqlDbType.Image).Value=content;

comm.Parameters.Add("@contentType", SqlDbType.NVarChar).Value=

GetContentType(new FileInfo(filePath.Text).Extension.Remove(0,1));

if(comm.ExecuteNonQuery()==1)

{

MessageBox.Show("Successfully insert image into database!");

}

else

{

MessageBox.Show("Failed to insert image into database");

}

conn.Close();

B、将数据库中的图片读出来的代码片断:(完整DEMO程序见附录二)

try{

SqlConnection conn=new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DatabaseImage;Data Source=(local)");

conn.Open();

SqlCommand comm=conn.CreateCommand();

https://www.doczj.com/doc/51612823.html,mandText="select * from Images where id=@id";

https://www.doczj.com/doc/51612823.html,mandType=CommandType.Text;

comm.Parameters.Add("@id", SqlDbType.BigInt).Value=int.Parse(Request["id"]);

SqlDataReader reader=comm.ExecuteReader();

while(reader.Read())

{

Response.ContentType=reader["contentType"].ToString();

Response.BinaryWrite((byte[])reader["Image"]);

}

Response.End();

conn.Close();

}

catch

{

Response.End();

}

这段代码可置于Page_Load事件中,数据图片要注意的两点是:

一、设置正确的ContentType(http中的content-type),图片的content-type格式一般为image/*,如jpeg为image/jpeg,bmp为image/bmp等等。

二、仅仅输出一张图片二进制流,https://www.doczj.com/doc/51612823.html, 中Page_Load事件先于页面输出被触发,因此图片的输出可以在此事件中进行,直接操作Reponse对象,避免输出与图片无关的而外信息(额外的第二张图片或者文字)。图片的二进制流输出后及时使用Response.End()方法结束http 响应,避免页面中的额外信息被https://www.doczj.com/doc/51612823.html,的引擎默认输出到客户端。

希望此文能够起到抛砖引玉的作用!^_^

附录一:

MainForm.cs

using System;

using System.Drawing;

using System.Collections;

using https://www.doczj.com/doc/51612823.html,ponentModel;

using System.Data;

using System.Data.SqlClient;

using System.IO;

using System.Windows.Forms;

namespace InsertImageToDatabase

{

public class MainForm : System.Windows.Forms.Form

{

private System.Windows.Forms.OpenFileDialog openFileDlg;

private System.Windows.Forms.TextBox filePath;

private System.Windows.Forms.Button browseButton;

private System.Windows.Forms.Button insertButton;

///

/// Required designer variable.

///

private https://www.doczj.com/doc/51612823.html,ponentModel.Container components = null; public MainForm()

{

//

// Required for Windows Form Designer support

//

InitializeComponent();

//

// TODO: Add any constructor code after InitializeComponent call //

}

///

/// Clean up any resources being used.

///

protected override void Dispose( bool disposing )

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

#region Windows Form Designer generated code

///

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

///

private void InitializeComponent()

{

this.openFileDlg = new System.Windows.Forms.OpenFileDialog(); this.filePath = new System.Windows.Forms.TextBox();

this.browseButton = new System.Windows.Forms.Button();

this.insertButton = new System.Windows.Forms.Button();

this.SuspendLayout();

// openFileDlg

//

this.openFileDlg.DefaultExt = "*.jpg;*.gif;*.bmp;*.png";

this.openFileDlg.Filter = "Image Files|*.jpg;*.gif;*.bmp;*.png|All Files|*.*"; //

// filePath

//

this.filePath.Location = new System.Drawing.Point(16, 16);

https://www.doczj.com/doc/51612823.html, = "filePath";

this.filePath.ReadOnly = true;

this.filePath.Size = new System.Drawing.Size(168, 20);

this.filePath.TabIndex = 0;

this.filePath.Text = "";

//

// browseButton

//

this.browseButton.Location = new System.Drawing.Point(200, 16);

https://www.doczj.com/doc/51612823.html, = "browseButton";

this.browseButton.TabIndex = 1;

this.browseButton.Text = "&Browse";

this.browseButton.Click += new System.EventHandler(this.browseButton_Click);

// insertButton

//

this.insertButton.Enabled = false;

this.insertButton.Location = new System.Drawing.Point(200, 56);

https://www.doczj.com/doc/51612823.html, = "insertButton";

this.insertButton.TabIndex = 2;

this.insertButton.Text = "&Insert";

this.insertButton.Click += new System.EventHandler(this.insertButton_Click); //

// MainForm

//

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

this.ClientSize = new System.Drawing.Size(292, 273);

this.Controls.Add(this.insertButton);

this.Controls.Add(this.browseButton);

this.Controls.Add(this.filePath);

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false;

https://www.doczj.com/doc/51612823.html, = "MainForm";

this.Text = "Insert Image to Database";

this.ResumeLayout(false);

#endregion

///

/// The main entry point for the application.

///

[STAThread]

static void Main()

{

Application.Run(new MainForm());

}

private void browseButton_Click(object sender, System.EventArgs e) {

if(openFileDlg.ShowDialog()==DialogResult.OK)

{

filePath.Text=openFileDlg.FileName;

insertButton.Enabled=true;

}

}

private void insertButton_Click(object sender, System.EventArgs e) {

FileStream fs=File.OpenRead(filePath.Text);

byte[] content=new byte[fs.Length];

fs.Read(content, 0,content.Length);

fs.Close();

SqlConnection conn=new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DatabaseImage;Data Source=(local)");

conn.Open();

SqlCommand comm=conn.CreateCommand();

https://www.doczj.com/doc/51612823.html,mandText="insert into Images(Image, contentType) values(@image, @contentType)";

https://www.doczj.com/doc/51612823.html,mandType=CommandType.Text;

SqlParameter param=comm.Parameters.Add("@image", SqlDbType.Image);

param.Value=content;

comm.Parameters.Add("@contentType", SqlDbType.NVarChar).Value=

GetContentType(new FileInfo(filePath.Text).Extension.Remove(0,1));

if(comm.ExecuteNonQuery()==1)

{

MessageBox.Show("Successfully insert image into database!");

}

else

{

MessageBox.Show("Failed to insert image into database");

}

conn.Close();

}

Access数据库程序设计试题大全

1、Access数据库是(B )。 A.层次型数据库 B.关系型数据库 C.网状型数据库 D.杂合型数据库 2、在Access数据库中,数据保存在(D )对象中。 A.窗体B.查询 C.报表D.表 3、数据库文件中至少包含有(A )对象。 A.表B.窗体 C.查询D.其余三种 4、在Access数据库系统中,不能建立索引的数据类型是(C )。 A.文本型B.数字型 C.备注型D.日期/时间型 5、如果字段内容为声音文件,可将此字段定义为(C )类型。 A.文本 B.查询向导 C.OLE对象 D.备注 6、在表设计视图中,如果要限定数据的输人格式,应修改字段的(C )属性。 A.格式B.有效性规则 C.输入格式D.字段大小 7、下面有关主键的叙述正确的是(B )。 A.不同的记录可以具有重复的主键值或空值 B.一个表中的主键可以是一个或多个字段 C.在一个表中的主键只可以是一个字段 D.表中的主键的数据类型必须定义为自动编号或文本 8、下面有关表的叙述中错误的是(C )。 A.表是Access数据库中的要素之一 B.表设计的主要工作是设计表的结构 C.Access数据库的各表之间相互独立 D.可以将其他数据库的表导人到当前数据库中 9、Access是(A )办公套件中的一个重要组成部分。 A.Office B.Word C.Excel D.Lotus 10、下列(B )图标是Access的标志。 11、存储在计算机内按一定的结构和规则组织起来的相关数据的集合称为(C )。

A.数据库管理系统B.数据库系统 C.数据库D.数据结构 12、数据的完整性,是指存贮在数据库中的数据要在一定意义下确保是(B )。 A.一致的B.正确的、一致的 C.正确的D.规范化的 13、不能退出Access2003的方法是(C )。 A.选择Access2003屏幕“文件”菜单的“退出”命令 B.选择Access2003控制菜单中的“关闭”命令 C.利用快捷键+ D.利用快捷键+ 14、关系数据库是以(C )的形式组织和存放数据的。 A.一条链B.一维表 C.二维表D.一个表格 15:以下有关数据基本表的叙述,(D )是正确的。 A.每个表的记录与实体可以以一对多的形式出现 B.每个表的关键字只能是一个字段 C.在表内可以定义一个或多个索引,以便于与其他表建立关系 D.每个表都要有关键字以使表中的记录惟一 16、在Access2000中一个数据库的所有对象都存放在一个文件中,该文件的扩展名是(B )。 A..DBC B..MDB C..DBM D..DBF 17、表是数据库的核心与基础,它存放着数据库的(A )。 A.全部数据B.部分数据 C.全部对象D.全部数据结构 18、建立Access2003数据库时要创建一系列的对象,其中最重要的是创建(C )。 A.报表B.基本表 C.基本表之间的关系D.查询 19、Access2003屏幕的主菜单的菜单项是(C )。 A.基本上都有自己的子菜单 B.会根据执行的命令而有所增添或减少 C.可被利用来执行Access的几乎所有命令的 D.以上全部是正确的 20、在Access数据库窗口使用表设计器创建表的步骤依次是(A )。 A.打开表设计器、定义字段、设定主关键字、设定字段属性和表的存储 B.打开表设计器、设定主关键字、定义字段、设定字段属性和表的存储 C.打开表设计器、定义字段、设定字段的属性、表的存储和设定主关键字 D.打开表设计器、设定字段的属性、表的存储、定义字段和设定主关键字 21、在表设计器的设计视图的上半部分的表格用于设计表中的字段。表格的每一行均由四部分

数据库图片的存储

1、引言 数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示。通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息。但是,如果我们想动态的显示图片,上述方法就不能满足需要了。我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。 2、建立后台数据库 假定处理的是图片新闻,那么我们可以建立相应的数据库及数据表对象。我们要存取的数据表结构的SQL脚本如下所示: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[picturenews]') andOBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[picturenews] GO CREATE TABLE [dbo].[picturenews] ( [id] [int] IDENTITY (1, 1) NOT NULL , [image] [image] NULL , [content] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL , [detail] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO 表picturenews中,字段id作为标识,每存储一行数据,自动增加1。字段image 用于存储图片信息,其数据类型为“image”。 3、向数据库存储二进制图片 启动Dreamweaver MX后,新建一个JSP文件。其代码如下所示。 <%@ page contentType="text/html;charset=gb2312"%>

java连接mysql数据库

Java连接MySQL 数据库的正确操作流程 时间:2010-05-25 15:41 来源:博客园字体:[大中小] 以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例),我们主要是以MySQL数据库为例讲下Java正确连接MySQL数据库的实际操作流程,以下就是对其详细内容的描述。 当然,首先要安装有JDK(一般是。然后安装MySQL,这些都比较简单,具体过程就不说了。配置好这两个环境后,下载JDBC驱动(这个是最新版的)。然后将其解压缩到任一目录。我是解压到D盘,然后将其目录下的加到classpath里,具体如下: “我的电脑”-> “属性” -> “高级” -> “环境变量”,在系统变量那里编辑classpath,将D:\加到最后,在加这个字符串前要加“;”,以与前一个classpath区分开。然后确定。 环境配置好了,很简单。现在,先配置MySQL,设其用户名为“root”,密码为“root”。在命令行或用一个SQL的前端软件创建Database。 我是用SQLyog的前端软件来创建Database的。 先创接MySQL 数据库: 1.CREATE DATABASE SCUTCS; 接着,创建表: 1.CREATE TABLE STUDENT 2.( 3.SNO CHAR(7) NOT NULL, 4.SNAME VARCHAR(8) NOT NULL, 5.SEX CHAR(2) NOT NULL, 6.BDATE DATE NOT NULL, 7.HEIGHT DEC(5,2) DEFAULT , 8.PRIMARY KEY(SNO) 9.); 然后插入数据,可以用SQL语句insert into <表名> values (value1, value2, ...); 也可以用SQLyog来操作 好了,创建好了。

Access数据库应用基础教程(第三版)习题及答案

Access数据库应用基础教程(第三版)习题集答案 第1章数据库系统概述 1. 什么是数据库?什么是数据库系统?答:数据库(database)是存放数据的仓库,严格的讲,数据库是长期存储在计算机内,有组织的,可共享的大量数据集合。 数据库系统(database systems),是由数据库及其管理软件组成的系统。它是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。它是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。 2. 什么是数据库管理系统?它有哪些主要功能? 答:数据库管理系统(database management system)是一种操纵和管理数据

库的大型软件,用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。数据库管理系统的主要功能有:数据定义、数据操作、数据库的运行管理、数据组织、数据库的保护、数据库的维护和通信。 3. 说出几种常用的数据模型。 答:层次模型、网状模型、关系模型。4. 什么是关系模型? 答:关系模型是用二维表的形式表示实体和实体间联系的数据模型。 5. 简述数据库设计的步骤。 答:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的建立和测试、数据库运行和维护。 第2章 SQL 语言简介 1. 什么是SQL语言?SQL语言具有哪些特点和功能? 答:SQL是一种数据库查询和程序设计语言,用于存取数据以及查询更新和管理关系

数据库系统。 SQL的特点和功能有:查询,操作,定义和控制四个方面,SQL语言具有高度的非过程化,语言简洁,语义明显,语法结构简单,直观易懂的特点。SQL语言即可以作为独立语言使用,用户可以在终端键盘上直接键入SQL命令对数据库进行操作,也可以作为嵌入式语言,嵌入到其他高级语言中。 2. SQL语言包含哪几个部分? 答:SQL语言包含4个部分:数据定义语言(DDL-Data Definition Language)、数据查询语言(DQL-Data Query Language)、数据操纵语言(DML-Data Manipulation Language)、数据控制语言(DCL-Data Control Language) 3. 在联接查询中,包含哪几类联接?答:联接可分为3类: (1)内部联接(典型的联接运算,使用类似于 = 或 <> 的比较运算符)。内部联接使用比较运算符根据每个表的通用列中的值匹配两个表中的行。内部联接包括同等

C#从SQL 数据库中读取和存入图片

C#从SQL 数据库中读取和存入图片 本实例主要介绍如何将图片存入数据库。将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用 ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中。主要代码如下: private void button1_Click(object sender, EventArgs e) { openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP"; if(openFileDialog1.ShowDialog()==DialogResult.OK) { string fullpath =openFileDialog1.FileName;//文件路径 FileStream fs = new FileStream(fullpath, FileMode.Open); byte[] imagebytes =new byte[fs.Length]; BinaryReader br = new BinaryReader(fs); imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length)); //打开数据库 SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05"); con.Open(); SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con); com.Parameters.Add("ImageList", SqlDbType.Image); com.Parameters["ImageList"].Value = imagebytes; com.ExecuteNonQuery(); con.Close();

Java中连接MySql数据库的几种方法

JDBC Java中JDBC定义了java与各种sql数据库之间的编程接口,JDBC API是一个统一的标准应用程序编程接口,这样可以屏蔽异种数据库之间的差异。 JDBC的工作原理 JDBC与ODBC(OpenData Base Connectivity,开放式数据库连接)的作用非常类似,它在应用程序和数据库之间起到了桥梁的作用。ODBC使用的特别广泛,在java中还提供了JDBC-ODBC桥,能够在JDBC与ODBC之间进行转换,这样可以通过ODBC屏蔽不同种数据库之间的差异。在JDK的包java.sql.*中定义了一系列的类、接口、异常以及这些类和接口中定义的属性和方法,java的开发人员通过一定的规则调用java.sql.*中的API就可以实现对数据库管理系统的访问。 JDBC的四种驱动 1.JDBC-ODBC Bridge JDBC-ODBC Bridge可以访问一个ODBC数据源,但在执行Java程序的机器上必须安装ODBC驱动,并作出配置,它的调用方式如下图: 因为中间有个JDBC-ODBC,所以影响了执行效率。 配置ODBC数据源的方法如下(以Mysql为例): 第一步,打开控制面板—>管理工具--->数据源(ODBC) 选择系统DSN,这一项默认应该是空的,我这里是已经配置好了一个数据源。

第二步,点击添加 第三步,选择Mysql的ODBC驱动,点击完成。 注:MySQL的ODBC驱动在系统中一般是找不到的,因为它不是系统默认自带的驱动,所以,我们要自己安装我们所需要的MySQL的ODBC驱动。安装步骤如下: ①.下载安装包,https://www.doczj.com/doc/51612823.html,/downloads/connector/odbc/ ②.我们下载与自己系统相应的ODBC驱动 这里我们选择

怎样将图片上传到数据库进行保存

这个范例共包括三个ASP文件和一个数据库(一个表),全部在同一目录下。 1、tblImage 表结构(ACCESS 2000) sn 自动编号序列号 content-type 文本图片类型 image OLE 对象图片数据 2、SimpleImageToData.asp:上传表单及保存图片到数据库的代码部分,主要文件。 <%@ Language=VBScript %> <% option explicit %> <% '从一个完整路径中析出文件名称 function getFileNamefromPath(strPath) getFileNamefromPath = mid(strPath,instrrev(strPath,"\")+1) end function '定义数据库连接字符串 dim cnstr cnstr = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.MapPath("./upload.mdb") %> 单个图像保存到数据库 上传图片 显示图片


<% if request.ServerVariables("REQUEST_METHOD") = "POST" then dim sCome, sGo, binData, strData dim posB, posE, posSB, posSE dim binCrlf dim strPath, strFileName, strContentType binCrlf = chrb(13)&chrb(10) '定义一个单字节的回车换行符

通过java或jsp想数据库存取二进制图片(精)

1 MySQL存储大容量的二进制文件的格式是 blob ,其实除了图片还可以存别的 2 要向数据库存储二进制的文件一定要把要存储的数据转换成二进制流 废话就不多说了, 大家看看代码很容易明白, 先来看一个 app 程序, 当然首先您要在数据库中先建立一个用于保存图片的表和相应的列,数据格式为 blob package com.lizhe; import Java.io.*; import java.sql.*; public class PutImg { public void putimg( { try { Class.forName("org.gjt.mm.mysql.Driver".newInstance(; String url = "JDBC:mysql://localhost/img?user=root&password=root&useUnicode=true&characterE ncoding= gbk"; Connection conn = DriverManager.getConnection(url; Statement stmt = conn.createStatement(; //stmt.execute("insert into imgt (id values (5"; stmt.close(; PreparedStatement pstmt = null; String sql = "";

File file = new File("c: log.jpg"; InputStream photoStream = new FileInputStream(file; //sql = " UPDATE imgt SET img = ? "; sql = "INSERT INTO imgtable (img VALUES (?"; pstmt = conn.prepareStatement(sql; pstmt.setBinaryStream(1, photoStream, (int file.length(; pstmt.executeUpdate(; pstmt.close(; conn.close(; } catch (Exception e { e.printStackTrace(; } } public static void main(String args[]{ PutImg pi=new PutImg(; pi.putimg(; } } InputStream photoStream = new FileInputStream(file;

Java连接MySql数据库,并且实现插入、删除、更新、选择操作

天之火–Qutr的专栏 君子终日乾乾,夕惕若,厉,无咎。 Home Java连接MySql数据库,并且实现插入、删除、更新、选择操作! 这是我最近写的一个连接MySql数据库的一个例子,主要实现了插入,删除,更新,选择操作,用的环境是j2sdk1.4.2_08,Eclipse3.1。以前我的同事用Python 写了同样的类,非常的好用,支持了我们公司的大部分业务,现在我们慢慢改用Java了,所以我用Java重写了一遍。一方面在今后的业务中能够用到,另一方面熟悉一下Java。 下面我把在Eclipse3.1下怎样配置数据库连接信息简单说一下。 1.启动Eclipse3.1。 2.建立一个Java project就叫DbConnect 吧,再在该Project下建立一个新类也叫 DbConnect 吧。 3.右击DbConnect.java文件点import,选择Archive file然后选择你的 mysql-connector-java-3.1.8-bin.jar文件,点Finish。你会看到有好些文件被加载进来,OK这就是连接MySql所需的驱动信息。如果到了这里你都成功的话那么恭喜你,你已经成功一半了!:) 4.接下来把我下面的代码copy到你的Java文件中,修改相关的数据库连接信息 运行一下。OK? 我说一下那个mysql-connector-java-3.1.8-bin.jar文件,其实这就是一个MySql的驱动,各数据库厂商提供了不同的适用于JDBC的驱动使得在Java中连接数据库非常简单。这里我就不多说了,以后我会写篇专门介绍数据库驱动的文章。关于MySql的驱动还有更新版本的,你需要到MySql的网站上去下载,这个网上到处都是,我就不多说了。下面看程序,有些地方我写了详细的注释应该能看懂。 这个类是非常有特色的,在每个方法的传人参数和返回值不变的情况下,希望高手能提出改进意见。多指教,谢谢! /** * 数据库连接、选择、更新、删除演示 */ //import java.sql.*; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; import java.util.*; public class DbConnect {

Java连接mysql数据库源代码

Java连接mysql数据库源代码 /** *@author mervyn *@Development_time 2011.3.12 *welcome to https://www.doczj.com/doc/51612823.html,/mervyn_hb */ package src; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.sql.*; import java.util.*; public class MysqlConnectSystem { /** * @param args * @throws IOException */ public static void main(String[] args) throws SQLException, IOException { String Usename,KeyID,UrlString; //String DriverConnect; char MenuExitValue; String driver="com.mysql.jdbc.Driver"; Scanner EntryValue=new Scanner(System.in); System.out.println("欢迎使用MysqlConnectSystem信息管理系统!"); MysqlConnectSystem mysqlconnect=new MysqlConnectSystem(); MysqlConnectSystem mysqlinsert=new MysqlConnectSystem(); MysqlConnectSystem mysqlupdate=new MysqlConnectSystem(); MysqlConnectSystem mysqldelete=new MysqlConnectSystem(); System.out.println("请输入要登录的用户名:"); Usename=EntryValue.next(); System.out.println("请输入要登录的数据库的密码:"); KeyID=EntryValue.next(); System.out.println("请输入需要登录的数据库:"); UrlString="jdbc:mysql://127.0.0.1:3306/"+EntryValue.next(); do{ try { Class.forName(driver); Connection conn=DriverManager.getConnection(UrlString, Usename,

ACCESS数据查询窗体设计.doc

复习: 1、窗体按其功能可以分为哪几种? 2、窗体常用的视图有哪三种? 3、窗体的组成?基本组成部分有哪三部分?默认是哪个部分。 4、在窗体中,对象的属性有哪几种? 5、控件可以分为哪几种? 6、窗体的数据源有哪几种? 新授课: 任务二数据查询窗体设计 任务描述:通过设计数据查询窗体,了解数据查询窗体的基本功能及结构;理解掌握主/子窗体的作用、设计数据查询窗体的基本步骤;学会设计数据查询窗体,并能够为用户简单查询交互界面。 一、设计数据查询窗体 例7-3:设计一个查询学生成绩窗体,实现按学号或姓名查询学生的学号、姓名、班级名称课程名称及成绩。窗体样张如下: 具体功能分析:运行查询窗体时,如果在主窗体对应文本框不输入学号和姓名时,子窗体中显示所有学生的信息;当只输入学号并单击搜索时,显示该学生的信息;当只输入姓名全名或部分并单击搜索时,子窗体显示满足条件的信息;当输入学号和姓名并单击搜索时,子窗体显示满足条件的信息;单击关闭按钮时,关闭该窗体。 操作步骤: 1、创建主窗体,保存为MAIN1。 在主窗体中添加两个文本框,文本框名称分别为xh1,xm1;使用标签在添加“查询学生成绩”标题文本;添

加窗体标题“按学号或姓名查询学生成绩(学号)”;修改窗体的相关格式属性。 2、创建一个查询,保存为query1。查询代码如下: SELECT stu.xh, stu.xm AS 姓名, stu.bjmc AS 班级名称, kcb.kcmc AS 课程名称, cjb.cj AS 成绩 FROM stu INNER JOIN (kcb INNER JOIN cjb ON kcb.kch = cjb.kch) ON stu.xh = cjb.xh WHERE ((([forms]![main1].[xh1]) Is Null) AND (([forms]![main1].[xm1]) Is Null)) OR (((stu.xh)=[forms]![main1].[xh1]) AND (([forms]![main1].[xm1]) Is Null)) OR (((stu.xm) Like "*" & [forms]![main1].[xm1] & "*") AND (([forms]![main1].[xh1]) Is Null)) OR (((stu.xh)=[forms]![main1].[xh1]) AND ((stu.xm) Like "*" & [forms]![main1].[xm1] & "*")); 3、创建数据表窗体,保存为ZCT1。(修改数据表窗体的相关格式和数据属性)。 4、创建主子窗体,将数据表窗体(ZCT1)拖动到主窗体中,并为“子窗体/子报表”对象命名为ZCTDX。 5、向主窗体添加命令按钮,并保存窗体。 (1)搜索按钮:按钮名称为SS1,标题“搜索”,该按钮的单击事件代码为“ME!ZCTDX.REQUERY”。 (2)关闭按钮:按钮名称为GB1,标题“关闭”,该钮的单击事件代码为“DOCMD.CLOSE”。 提高篇设置: (1)运行窗体设计设置主/子窗体的格式及数据属性。 (2)为接收数据的文本框设置获得焦点事件 Private Sub xh1_GotFocus() xh1 = Null End Sub Private Sub xm1_GotFocus() xm1 = Null End Sub 二、数据查询窗体相关知识 1、主/子窗体 窗体中的基本窗体是主窗体,窗体中的窗体称为子窗体。主/子窗体用于同时显示两张表或多张表,它主要用来显示一对多的关系。一般来说,主窗体显示一对多关系中的一端表(主表)信息,通常使用纵栏式窗体;子窗体显示一对多关系的多端表(相关表)的信息,通常使用表格式窗体或数据工作表窗体。) 2、窗体中对象的引用方法 格式:FORMS!窗体名称.控件名或 FORMS!窗体名称!控件名 3、确定查询的条件(关键) 设计数据查询窗体时,条件的组数据是由接收条件的文件框个数决定的。如果有N个接收数据的文件框,则查询条件应有n2组。 4、在VBA窗口,设置对象的名称及代码。

C# 图片保存到数据库和从数据库读取图片并显示

C# 图片保存到数据库和从数据库读取图片并显示 图片保存到数据库的方法: public void imgToDB(string sql) { //参数sql中要求保存的imge变量名称为@images //调用方法如:imgToDB("update UserPhoto set Photo=@images where UserNo='" + temp + "'"); FileStream fs = File.OpenRead(t_photo.Text); byte[] imageb = new byte[fs.Length]; fs.Read(imageb, 0, imageb.Length); fs.Close(); SqlCommand com3 = new SqlCommand (sql,con); com3.Parameters.Add("@images", SqlDbType.Image).Value = imageb; if (com3.Connection.State == ConnectionState.Closed) com3.Connection.Open(); try { com3.ExecuteNonQuery(); } catch { } finally { com3.Connection.Close(); } } 数据库中读出图片并显示在picturebox中: 方法一: private void ShowImage(string sql) { //调用方法如:ShowImage("select Photo from UserPhoto where UserNo='" + userno +"'"); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); byte[] b= (byte[])cmd.ExecuteScalar(); if (b.Length 〉0) { MemoryStream stream = new MemoryStream(b, true); stream.Write(b, 0, b.Length); pictureBox1.Image = new Bitmap(stream); stream.Close(); } conn.Close(); }

java实现图片或文件的上传功能实现代码

java实现图片或文件的上传功能具体思路及代码 一、思路 文件是如何从本地发送到服务器的呢? 首先,我们创建一个新的web工程,在工程的WebRoot目录下新建一个upload文件夹,这样当我们将该工程部署到服务器上时,服务器便也生成个upload文件夹,用来存放上传的资源。 然后,在WebRoot目录下新建一个jsp文件,主要实现的作用就是选择上传的文件,提交至servlet来进行处理 详细代码如下:一个form将文件信息通过post方式传送到指定的servlet 二、代码 复制代码代码如下: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> "> My JSP 'upload.jsp' starting page

请选择上传的图片或文件:

Java使用JDBC连接MYSQL数据库增删改查示例

Java使用JDBC连接MYSQL数据库增删改查示例JDBC连接MYSQL数据库: import java.sql.Connection; import java.sql.DriverManager; public class Mysql { public static void main(String arg[]) { try { Connection con = null; //定义一个MYSQL链接对象 Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL 驱动 con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //链接本地MYSQL System.out.print("yes"); } catch (Exception e) { System.out.print("MYSQL ERROR:" + e.getMessage()); } }

} Class.forName("com.mysql.jdbc.Driver").newInstance(); 我们链接的是MYSQL 数据库,所以需要一个MYSQL的数据库驱动,如果你的环境中没有安装,可以下载:mysql-connector-java-5.1.17-bin.jar JAR包,然后放进jdk1.6.0_37\jre\lib\ext 重启eclispe 就可以在JRE系统库中看到。 con = DriverManager.getConnection;("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); 是链接数据库的语句,返回Connection con;对象。参数格式:("jdbc:mysql://ip:端口/数据库名称", 用户名,密码) 写入一条数据 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Mysql { /**

上传图片及存到数据库

1.上传图片到指定的文件夹,并且把图片的路径存到数据库里面。 //判断上传是否有文件 if (FileUpload1.HasFile) { string filepath = FileUpload1.PostedFile.FileName.ToString(); //将图片保存到项目文件夹image里面 string fileName = System.IO.Path.GetFileName(filepath); string savePaht = Server.MapPath("images/" + fileName); FileUpload1.SaveAs(savePaht); string strSql = "insert into userInfo (userimage) values ('"+ filepath+"')"; // string strSql = "insert into userInfo (userimage) values (@image)"; //userInfo 是表名userimage是图片的字段 Sqlconnection conn=new Sqlconnection(@"数据库的连接字符串"); SqlCommand cmd = new SqlCommand(strSql, conn); conn.open(); //cmd.parameters.add("@image",sqldbtype.varchar,100).value="./image"+filepath; cmd.ExecuteNonQuery(); } 2.遍历文件夹里面的图片,显示在datalist里面 //获取图片所在的文件夹的路径 DirectoryInfo imagesfile = new DirectoryInfo(Server.MapPath("./images")); //绑定数据源 DataList1.DataSource = imagesfile.GetFiles("*.jpg"); DataList1.DataBind();

java上传文件通过mybatis存储到数据库的BLOB格式中

上传文件通过mybatis存储到数据库的BLOB格式中 HTML 页面需要设置一个文件框 [html]view plaincopy 1.

2. 3. 4. 5.
上传操作方法: [java]view plaincopy 1.public int doUpload() throws Exception { 2. 3. Map param = new HashMap(); 4. ServletFileUpload servletFileUpload = new ServletFileUpload(); 5. FileItemIterator itr = servletFileUpload.getItemIterator(mSGA.getCur rentRequest()); 6.while (itr.hasNext()) { 7. FileItemStream fi = itr.next(); 8.if ("file".equals(fi.getFieldName())) { 9. InputStream is = fi.openStream(); 10.byte[] b = FileCopyUtils.copyToByteArray(is); //FileCopyU tils 为spring下的一个工具类。 11.if (b == null || b.length == 0) { return0; } 12. param.put("FILE", b);//此处所用的参数类型为 byte[] 13. } 14. } 15. 16.//////////各种参数放入param你懂得。。。。 17. 18.//dao 为个人封装的工具类。。。 19. 20. param.put("ID", dao.getSequence("SEQ_NAME")); 21.

Java连接MySQL数据库

Java与Myql数据库的连接问题 在我痛苦的try了N多次之后我终于明白,一个.java文件如何与mysql数据库连同并且可以在小黑屏里显示数据库里面的内容,数据库的驱动文件的安装实在是件头疼的事,实际上是不需要安转的,按如下步骤即可轻松解决。 1.在网上下载一个数据库驱动程序,例如我下载的是(0002mysqlconnectorjava517(1).rar)大小是7.71MB,解压之,到 0002mysqlconnectorjava517(1)或者到当前文件,在mysql-connector-java-5.1.7文件里有个mysql-connector-java-5.1.7-bin.jar文件,可以将此文件解压也可以不解压, 下面有a、b两种方法(结果是一样),首先我的文件是这样放的: a.我的那个没解压的.jar文件在D:\mysql-connector-java-5.1.7这个文件夹里面(就是那个694kb的压缩包) b.我把这个.jar文件解压后放在的D:\mysql-connector-java-5.1.7这个文件夹里面(就是那个mysql-connector-…)文件夹 2.配置环境变量(这是最要命的)我的电脑-->属性-->高级-->环境变量(N)-->系统变量-->新建classpath

如果是上面的a情况那么是这样配的 变量值是:D:\mysql-connector-java-5.1.7\mysql-connector-java-5.1.7-bin.jar; 请切记变量值后面一定要有一个分号----【;】切记要有这个不然就出现如下异常错误并且在每次设置环境变量之后DOS框是要重新启动的不然没有生效的是。 D:\Java>javac database.java D:\Java>java database Exception in thread "main" https://www.doczj.com/doc/51612823.html,ng.NoClassDefFoundError: database Caused by: https://www.doczj.com/doc/51612823.html,ng.ClassNotFoundException: database at https://www.doczj.com/doc/51612823.html,.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at https://www.doczj.com/doc/51612823.html,.URLClassLoader.findClass(URLClassLoader.java:188) at https://www.doczj.com/doc/51612823.html,ng.ClassLoader.loadClass(ClassLoader.java:307) at https://www.doczj.com/doc/51612823.html,uncher$AppClassLoader.loadClass(Launcher.java:301) at https://www.doczj.com/doc/51612823.html,ng.ClassLoader.loadClass(ClassLoader.java:252) at https://www.doczj.com/doc/51612823.html,ng.ClassLoader.loadClassInternal(ClassLoader.java:320) Could not find the main class: database. Program will exit. D:\Java>

相关主题
文本预览
相关文档 最新文档