精华内容
下载资源
问答
  • 二进制数据存入数据库

    千次阅读 2018-06-05 16:11:22
    //创建二进制序列化器  Stream fStream2 = new FileStream(fileName, FileMode.Open, FileAccess.Read);  DataSet ds = (DataSet)binFormat.Deserialize(fStream2);//反序列化对象  return ds;  }    ///   ...
    using UnityEngine;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using MySql.Data.MySqlClient;
    using MySql.Data;
    using System.Data;
    using System.IO;
    using System.Data;
    using System.Runtime.Serialization.Formatters.Binary;






    public class WriteSQLcfg : MonoBehaviour {


       static MySqlConnection dbConnection;
        string query;
        DataSet ds_sql;
        DataTable dt_sql;
        public static List<string> nameArray = new List<string>();
        public string dataBaseName;


    void Start () {


    }

    void Update () {


            if (Input.GetKeyDown(KeyCode.W))
            {
                OpenSql();
                CreatUser("admin", "admin");
                CreateDataBase(dataBaseName);


                GetObjectNameToArray<string>("cfg", ".xml");


                //读取配置文件并导入数据库
                for (int i = 0; i < nameArray.Count; i++)
                {
                    string fileName = Application.streamingAssetsPath + "/cfg/" + nameArray[i] + ".xml";
                    ds_sql = ReadBatFile(fileName);
                    dt_sql = ds_sql.Tables[0];


                    List<string> list_columns = new List<string>();
                    List<string> list_rows = new List<string>();
                    foreach (DataColumn colum in dt_sql.Columns)
                    {
                        list_columns.Add(colum.ToString());
                    }


                    CreatTable(nameArray[i], dataBaseName, list_columns.ToArray());


                    Dictionary<int, List<string>> tempValue = new Dictionary<int, List<string>>();
                    int key = 0;
                    foreach (DataRow row in dt_sql.Rows)
                    {
                        tempValue[key] = new List<string>();
                        foreach (DataColumn column in dt_sql.Columns)
                        {
                            tempValue[key].Add(row[column].ToString());
                        }
                        key++;
                    }


                    //写入数据
                    for (int index = 0; index < tempValue.Count; index++)
                    {
                        InsertInfo(nameArray[i], list_columns.ToArray(), tempValue[index].ToArray());
                    }
                }


                dbConnection.Close();


            }

    }










        public  void OpenSql()
        {
            try
            {
                dbConnection = new MySqlConnection("Data Source=localhost;Persist Security Info=yes;UserId=root; PWD=admin;");
                dbConnection.Open();
            }
            catch (Exception e)
            {
                throw new Exception("服务器连接失败,请重新检查是否打开MySql服务。" + e.Message.ToString());
            }
        }
        //判断表格是否存在
        public bool IsTableExits(string tableName,string database)
        {
            query = string.Format("SELECT DISTINCT t.table_name, t.TABLE_SCHEMA FROM information_schema.TABLES t WHERE t.table_name = '{0}' AND t.TABLE_SCHEMA = '{1}';", tableName, database);
            DataSet result = ExecuteQuery(query);
            return result.Tables[0].Rows.Count >= 1;
        }
        //判断库是否存在
        public bool IsDataBaseExits(string dataBaseName)
        {
            query = string.Format("SELECT information_schema.SCHEMATA.SCHEMA_NAME FROM information_schema.SCHEMATA where SCHEMA_NAME = '{0}';", dataBaseName);
            DataSet result = ExecuteQuery(query);
            return result.Tables[0].Rows.Count >= 1;
        }
        //判断用户是否存在
        public bool IsUserExist(string userName)
        {
            query = string.Format("SELECT user FROM mysql.user where user = 'admin';");
            DataSet result = ExecuteQuery(query);
            return result.Tables[0].Rows.Count >= 1;
        }
        //创建用户
        public void CreatUser(string userName,string psw)
        {
            if (IsUserExist(userName))
            {
                return;
            }
            query = string.Format("GRANT all privileges  ON mysql.user TO '{0}'@'%' IDENTIFIED BY '{1}';", userName, psw);
            ExecuteQuery(query);
        }


        //创建数据库
        public DataSet CreateDataBase(string dataBaseName)
        {
            query = "CREATE DATABASE IF NOT EXISTS " + dataBaseName + ";";
            return ExecuteQuery(query);
        }
        //创建表格
        public DataSet CreatTable(string tableName, string dataBase, string[] colName)
        {
            dbConnection.Close();
            string connectionString = string.Format("Data Source=localhost;Database = {0};UserId=root; PWD=admin;", dataBase);
            dbConnection = new MySqlConnection(connectionString);
            dbConnection.Open();
            bool isexist;
            isexist = IsTableExits(tableName,dataBase);
            Debug.Log(isexist);
            if (isexist)
            {
                string dropTable = string.Format("DROP TABLE {0}", tableName);
                ExecuteQuery(dropTable);
            }


            //if (colName.Length != colType.Length)
            //{
            //    throw new Exception("columns.Length != colType.Length");
            //}


            string query = "CREATE TABLE " + tableName + " (" + colName[0] + " INT NOT NULL AUTO_INCREMENT";


            for (int i = 1; i < colName.Length; ++i)
            {
                query += ", " + colName[i] + " varchar(255)" ;
            }


            query += ", PRIMARY KEY (" + colName[0] + ")" + ");";




            return ExecuteQuery(query);
        }


        //插入一条数据,不包括ID,自动累加
        public DataSet InsertInfo(string tableName, string[] colNames, string[] values)
        {
            string query = "INSERT INTO " + tableName + "(";
            query += colNames[1];
            for (int cnt = 2; cnt < colNames.Length; cnt++)
            {
                query += "," + colNames[cnt];
            }
            query += ")";
            query += " VALUES (" + "'" + values[1] + "'";
            for (int i = 2; i < values.Length; ++i)
            {
                query += ", " + "'" + values[i] + "'";
            }


            query += ")";


            Debug.Log(query);
            return ExecuteQuery(query);


        }


     


        public static DataSet ExecuteQuery(string sqlString)
        {
            if (dbConnection.State == ConnectionState.Open)
            {
                DataSet ds = new DataSet();
                try
                {


                    MySqlDataAdapter da = new MySqlDataAdapter(sqlString, dbConnection);
                    da.Fill(ds);


                }
                catch (Exception ee)
                {
                    throw new Exception("SQL:" + sqlString + "/n" + ee.Message.ToString());
                }
                finally
                {
                }
                return ds;
            }
            return null;
        }


        public DataSet ReadBatFile(string fileName)
        {
            BinaryFormatter binFormat = new BinaryFormatter();//创建二进制序列化器
            Stream fStream2 = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            DataSet ds = (DataSet)binFormat.Deserialize(fStream2);//反序列化对象
            return ds;
        }


        


        /// <summary>  
        /// 根据指定的 Assets下的文件路径 返回这个路径下的所有文件名//  
        /// </summary>  
        /// <returns>文件名数组</returns>  
        /// <param name="path">Assets下“一"级路径</param>  
        /// <param name="pattern">筛选文件后缀名的条件.</param>  
        /// <typeparam name="T">函数模板的类型名t</typeparam>  
        void GetObjectNameToArray<T>(string path, string pattern)
        {
            string objPath = Application.streamingAssetsPath + "/" + path;
            string[] directoryEntries;
            try
            {
                //返回指定的目录中文件和子目录的名称的数组或空数组  
                directoryEntries = System.IO.Directory.GetFileSystemEntries(objPath);


                for (int i = 0; i < directoryEntries.Length; i++)
                {
                    string p = directoryEntries[i];
                    //得到要求目录下的文件或者文件夹(一级的)//  
                    string[] tempPaths = StringExtention.SplitWithString(p, "/StreamingAssets/" + path + "\\");


                    //tempPaths 分割后的不可能为空,只要directoryEntries不为空//  
                    if (tempPaths[1].EndsWith(".meta"))
                        continue;
                    string[] pathSplit = StringExtention.SplitWithString(tempPaths[1], ".");
                    //文件  
                    if (pathSplit.Length > 1)
                    {
                        nameArray.Add(pathSplit[0]);
                    }
                    //遍历子目录下 递归吧!  
                    else
                    {
                        GetObjectNameToArray<T>(path + "/" + pathSplit[0], "pattern");
                        continue;
                    }
                }
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                Debug.Log("The path encapsulated in the " + objPath + "Directory object does not exist.");
            }
        }


        public class StringExtention
        {


            public static string[] SplitWithString(string sourceString, string splitString)
            {
                string tempSourceString = sourceString;
                List<string> arrayList = new List<string>();
                string s = string.Empty;
                while (sourceString.IndexOf(splitString) > -1)  //分割  
                {
                    s = sourceString.Substring(0, sourceString.IndexOf(splitString));
                    sourceString = sourceString.Substring(sourceString.IndexOf(splitString) + splitString.Length);
                    arrayList.Add(s);
                }
                arrayList.Add(sourceString);
                return arrayList.ToArray();
            }
        }   
          
          
            
         
    }
    展开全文
  • 小弟才接触QT不久,公司项目的要求是这样的,要把网络上传过来的大量二进制数据(文件数据),通过我写的服务器端程序,存入数据库里的表里。我发现QT里,byte和QByteArray都可以存放二进制数据,所以想问下2个问题...
  • 请哪位高手指点一下,在vs2005.net中,用C#如何将xml文件转换成二进制数据存入数据库字段,并从数据库提取该字段转换成xml文件?万分感谢 。 
    请哪位高手指点一下,在vs2005.net中,用C#如何将xml文件转换成二进制数据存入数据库字段,并从数据库提取该字段转换成xml文件?万分感谢 。 
    展开全文
  • PreparedStatement setObject 之后将对象存入数据库,读取时无法强制转换回来 PreparedStatement stmt = connection.prepareStatement("UPDATE tb set aaa=? where id=1 "); stmt.setObject(1, new myClass())...
  • 如果你想把二进制数据,比如说图片文件636f707962616964757a686964616f31333264623834和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和...

    展开全部

    怎样在mysql中存储比较大的图片?

    如果你想把二进制的数据,比如说图片文件636f707962616964757a686964616f31333264623834和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。

    一、本文概述

    本文的主要内容如下:

    * 在MySQL中建立一个新的数据库

    * 一个怎样储存文件的例子程序

    * 一个怎样访问文件的例子程序

    二、在MySQL中建立一个新的database

    首先,你必须在你的MySQL中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。在例子中我会使用下列结构,为了建立数据库,你必须做下列步骤:

    1. 进入MySQL控制器

    2. 输入命令"create database binary_data;"

    3. 输入命令"use binary_data;"

    输入如下命令:

    "CREATE TABLE binary_data ( id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,description CHAR(50), bin_data LONGBLOB, filename CHAR(50), filesize CHAR(50), filetype CHAR(50));" (不能断行)

    如果没有意外,数据库 和 表 应该建立好了。

    三、一个怎样储存文件的例子程序

    用这个例子你可以通过Html表单将文件传输到数据库中。

    store.php3

    // store.php3 - by Florian Dittmer

    ?>

    // 如果提交了表单,代码将被执行:

    if ($submit) {

    // 连接到数据库

    // (你可能需要调整主机名,用户名和密码)

    MYSQL_CONNECT( "localhost", "root", "password");

    MySQL_select_db( "binary_data");

    $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));

    $result=MYSQL_QUERY( "INSERT INTO binary_data (description,bin_data,filename,filesize,filetype)VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");

    $id= MySQL_insert_id();

    print "This file has the following Database ID: $id";

    MYSQL_CLOSE();

    } else {

    // 否则显示储存新数据的表单

    ?>

    @MySQL_select_db( "binary_data");

    $query = "select bin_data,filetype from binary_data where id=$id";

    $result = @MYSQL_QUERY($query);

    $data = @MYSQL_RESULT($result,0, "bin_data");

    $type = @MYSQL_RESULT($result,0, "filetype");

    Header( "Content-type: $type");

    echo $data;

    };

    ?>

    程序必须知道要访问那个文件, 你必须将ID作为一个参数。

    例如: 一个文件在数据库中的ID为2. 你可以这样调用它: getdata.php3?id=2

    如果你将图片储存在数据库里, 你可以向调用图片一样调用它。

    Example: 一个图片文件在数据库中的ID为3. 你可以这样调用它:

    五、怎样储存大于1MB的文件

    如果你想储存大于1MB的文件,你必须对你的程序、PHP设置、SQL设置进行许多修改。

    下面几条也许可以帮助你储存小于24MB的文件:

    1) 修改 store.php3,将 MAX_FILE_SIZE 的值改成 24000000。

    2) 修改你的PHP设置,在一般情况下,PHP只允许小于2MB的文件,你必须将max_filesize(在php.ini中)的值改成24000000

    3) 去掉MYSQL的数据包大小限制,在一般情况下 MYSQL 小于1 MB的数据包。

    4) 你必须用以下参数重启你的MYSQL :/usr/local/bin/safe_MySQLd -O key_buffer=16M -O table_cache=128 -O sort_buffer=4M -O record_buffer=1M -O max_allowed_packet=24M

    5) 如果仍然出错:可能是超时错误,如果你通过一个很慢的连接来储存一个很大的文件,PHP缺省的时间限制为30秒。你可以将max_execution_time(在php.ini中)的值改为-1

    下面是一个老外写的,可以读

    Saving Images in MySQL

    Sometimes, it's more convenient to save images in a database than as files.

    MySQL and PHP make it very easy to do this. In this article, I will describe

    how to save images in a MySQL database and display them later on.

    Setting up the database

    The difference between any regular text or integer fields and a field that

    needs to save an image is the amount of data that is needed to be held in the

    field. MySQL uses special fields to hold large amounts of data. These fields

    are known as blobs (blob).

    Here is the BLOB definition from the MySQL site :

    A BLOB is a binary large object that can hold a variable amount of data. The

    four BLOB types TINYBLOB, BLOB, MEDIUMBLOB and LONGBLOB differ only in the

    maximum length of the values they can hold

    For more information about MySQL BLOBs check out

    hapter/manual_Reference.html#BLOB

    Use the next syntax to create a basic table that will hold the images:

    CREATE TABLE Images (

    PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY,

    Image BLOB

    );

    Setting the upload script

    An example of a file upload front end can be seen at File Uploading by berber

    (29/06/99). What we need now is the PHP script that will get the file and

    insert it into MySQL. The next script does just that. In the script, I'm

    assuming that the name of the file field is "icture".

    If($Picture != "none") {

    $PSize = filesize($Picture);

    $mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize));

    unlink($Picture);

    mysql_connect($host,$username,$password)

    or die("Unable to connect to SQL server");

    @mysql_select_db($db)

    or die("Unable to select database");

    mysql_query("INSERT INTO Images (Image) VALUES '($mysqlPicture')")

    or die("Can't Perform Query");

    }

    else {

    echo"You did not upload any picture";

    }

    ?>

    This is all that is needed to enter the image into the database. Note that in

    some cases you might get an error when you try to insert the image into

    MySQL. In such a case you should check the maximum packet size allowed by

    your MySQL ver. It might be too small and you will see an error about this in

    the MySQL error log.

    What we did in the above file is :

    1. Check if a file was uploaded with If($Picture != "none").

    2. addslashes() to the picture stream to avoide errors in MySQL.

    3. Delete the temporary file.

    3. Connect to MySQL, choose the database and insert the image.

    Displaying the Images

    Now that we know how to get the images into the database we need to figure

    out how to get them out and display them. This is more complicated than

    getting them in but if you follow these steps you will have this up and

    running in no time.

    Since showing a picture requires a header to be sent, we seem to be in an

    impossible situation in which we can only show one picture and than we can't

    show anymore Since once the headers are sent we can't send any more headers.

    This is the tricky part. To outsmart the system we use two files. The first

    file is the HTML template that knows where we want to display the image(s).

    It's a regular PHP file, which builds the HTML that contains the tags,

    as we want to display them. The second file is called to provide the actual

    file stream from the database directly into the SRC property of the

    tag.

    This is how a simple script of the first type should look like:

    mysql_connect($host,$username,$password)

    or die("Unable to connect to SQL server");

    @mysql_select_db($db)

    or die("Unable to select database");

    mysql_query("SELECT * FROM Images")

    or die("Can't Perform Query");

    While($row=mysql_fetch_object($result)) {

    echo "%5C%22SecondType.php3?PicNum=%24row-icNum\">";

    }

    ?>

    While the HTML is being displayed, the SecondType.php3 file is called for

    each image we want to display. The script is called with the Picture ID

    (PicNum) which allows us to fetch the image and display it.

    The SecondType.php3 file looks like this :

    $result=mysql_query("SELECT * FROM Images WHERE PicNum=$PicNum")

    or die("Can't perform Query");

    $row=mysql_fetch_object($result);

    Header( "Content-type: image/gif");

    echo $row->Image;

    ?>

    This is the whole theory behind images and MySQL. The scripts in this example

    are the basics. You can now enhance these scripts to include thumbnails, set

    the images in various positions, enhance the database table to hold an ALT

    field, Check the width and height of the images before you insert them into

    the database and keep that data in the table too etc...

    2Q==

    已赞过

    已踩过<

    你对这个回答的评价是?

    评论

    收起

    展开全文
  • $file = 'abcd.sqlite';mysql_connect('localhost','root','123456');mysql_select_db('zblog');mysql_query('set names utf8');/*$backup_stream = file_get_contents($file);// var_dump($backup_stream);...

    $file = 'abcd.sqlite';

    mysql_connect('localhost','root','123456');

    mysql_select_db('zblog');

    mysql_query('set names utf8');

    /*

    $backup_stream = file_get_contents($file);

    // var_dump($backup_stream);exit;

    // $PSize = filesize($file);

    // $backup_stream = addslashes(fread(fopen($file, "r"), $PSize));

    // var_dump($backup_stream);exit;

    $sql = 'insert into t_user(backup) values("'. addslashes($backup_stream) .'")';

    mysql_query($sql) ;

    echo mysql_error();

    exit;

    */

    $sql = 'select id,backup from t_user limit 1';

    $result = mysql_query($sql);

    $row = mysql_fetch_assoc($result);

    header('Content-Description: File Transfer');

    header('Content-Type: application/octet-stream');

    header('Content-Disposition: attachment; filename=db_backup.sqlite');

    header('Content-Transfer-Encoding: binary');

    header('Expires: 0');

    header('Cache-Control: must-revalidate');

    header('Pragma: public');

    header('Content-Length: ' . strlen($row['backup']));

    // ob_clean();

    // flush();

    // readfile($file);

    echo $row['backup'];

    exit;

    /*

    if (file_exists($file)) {

    header('Content-Description: File Transfer');

    header('Content-Type: application/octet-stream');

    header('Content-Disposition: attachment; filename='.basename($file));

    header('Content-Transfer-Encoding: binary');

    header('Expires: 0');

    header('Cache-Control: must-revalidate');

    header('Pragma: public');

    header('Content-Length: ' . filesize($file));

    ob_clean();

    flush();

    readfile($file);

    exit;

    }

    */

    展开全文
  • 因为图片是以二进制存入数据库的,想要显示图片时,必须对取出的数据进行解码
  • 以下是读取用户上传的文件,转换成二进制写入数据库:byte[] fileContent = new byte[0]; Stream fileInStream; int iSize = 0; iSize = FileAttachment.PostedFile.Conten
  • 以下是读取用户上传的文件,转换成二进制写入数据库: 读取文件转化为二进制写入数据库byte[]fileContent=newbyte[0];StreamfileInStream;intiSize=0;iSize=FileAttachment.PostedFi...
  • nodejs可以通过nodejs-redis模块来操作redis数据库,使用redis.createClient()连接redis数据库,可以直接将二进制数据存入数据库。通过redis-cli读取。nodejs redis 读写二进制数据通过nodejs-redis模块我们可以很...
  • vs2010 MFC如何将Mat类型的矩阵序列化成二进制数据存入数据库中。
  • 这段代码是可以吧本地图片文件转换成二进制数据。 //打开加载本地图片并把他转化为二进制文件 private void Button_Click_1(object sender, RoutedEventArgs e) { Stream phpto = null; int length; OpenFileDialog ...
  • 二进制存入读取数据库

    千次阅读 2014-03-19 20:51:27
    SQl数据脚本 use test go create table Categories ( CategoryID int primary key identity(1,1), CategoryName varchar(50), Picture image ) go 后台代码:  SqlDataAdapter sda = null;  ...
  • 如果你想把二进制数据,比如说图片文件62616964757a686964616fe78988e69d8331333262346366和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样...
  • 二进制数据存入

    2013-03-17 22:52:11
    数据库表的设计  create table testblob( ...//注意:以二进制数据存入数据库中的数据,别在客户端用select * 进行查询,   //把图片以二进制数据进行存入 @Test  public void insert() throws SQLExceptio
  • 通过二进制数据流的方式,读写图片,把图片存入数据库,再从数据库读取出来显示 通过二进制数据流的方式,读写图片,把图片存入数据库,再从数据库读取出来显示
  • 如果要把图片等二进制数据存入数据库,要把数据库中的相应字段设为“blob”,Mysql数据库是这样,其他数据库可能有所不同。 测试代码:   /** * 图片等二进制数据的数据库插入、读取操作 */ package test; ...
  • 关于转换问题,刚开始我需要从数据库读出一个二进制数据流,并将其转换成一个Image格式。 在不涉及数据库的情况下,我先将一个图片转换成一个二进制数组显示出来,再写一个方法将其转换成图片image格式。 一、 先...
  • 图片二进制存入数据&从数据库中读取图片显示
  • 如题,需要将视频文件转成二进制码流存入数据库表的字段中 使用的是vc6.0和SQL server 2005 希望各位大大指教 感激不尽
  • 在C#开发应用程序的过程中,图片一般会存放在文件系统中,当然图片也可以二进制的方式存放到数据库中,不过一般不建议存放在数据库中,因为图片占用的空间还是挺大的,特殊情况下可以考虑将图片存在数据。...
  • 在C#开发应用程序的过程中,图片一般会存放在文件系统中,当然图片也可以二进制的方式存放到数据库中,不过一般不建议存放在数据库中,因为图片占用的空间还是挺大的,特殊情况下可以考虑将图片存在数据。...
  • 二进制数据转换为字典   NSData *extraMsgData = [set dataForColumn : @"extraMsg" ];   NSDictionary *extraMsg = [ NSJSONSerialization JSONObjectWithData :extraMsgData options : ...
  • 另一种是将文件以二进制字节数组的形式存入数据库 相对来说二进制字节数组会占用较大的内存空间,所以当前普遍用URL进行存储与请求第一种URL形式1.简单上传文件界面index.jsp; charset=utf-8" pageEnco
  • 在C#开发应用程序的过程中,图片一般会存放在文件系统中,当然图片也可以二进制的方式存放到数据库中,不过一般不建议存放在数据库中,因为图片占用的空间还是挺大的,特殊情况下可以考虑将图片存在数据。...
  • 在C#开发应用程序的过程中,图片一般会存放在文件系统中,当然图片也可以二进制的方式存放到数据库中,不过一般不建议存放在数据库中,因为图片占用的空间还是挺大的,特殊情况下可以考虑将图片存在数据。...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 363
精华内容 145
关键字:

二进制数据存入数据库