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

    千次阅读 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();
            }
        }   
          
          
            
         
    }
    展开全文
  • I'm trying to insert binary data into an MSSQL database using stored procedures from within an pyramid web application using pymssql.The MSSQL datatype for the respective column is varbinary(max).My q...

    I'm trying to insert binary data into an MSSQL database using stored procedures from within an pyramid web application using pymssql.

    The MSSQL datatype for the respective column is varbinary(max).

    My question is: What does the varbinary datatype of the MSSQL database expect me to do with the binary file before inserting it?

    Here's what I've been trying:

    with open(tmp_file, 'rb') as content_file:

    filecontent = content_file.read()

    ... and then pass the value of filecontent to the stored procedure.

    tmp_file in this case is a valid path to a .png file.

    The MSSQL db answers with the following error:

    *** DatabaseError: (257, 'Implicit conversion from data type varchar to varbinary(max) is not

    allowed. Use the CONVERT function to run this query.DB-Lib error message 257, severity 16:\nGeneral

    SQL Server error: Check messages from the SQL Server\n')

    I am able to insert the value of the filecontent variable into an SQLite (varbinary column) and a MySQL database (BLOB column) no problem.

    Why is it not working with the MSSQL db?

    解决方案

    Maybe you have to convert the varchar explicitly. That's what your error message implies.

    This seems to solve the same problem.

    展开全文
  • 小弟才接触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())...
  • php从数据库中取二进制流文件转换为图片,图片以二进制存入数据库实现 function data_uri($contents, $mime) { $base64 = base64_encode($contents); return ('data:' . $mime . ';base64,' . $base...

    php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现

    function data_uri($contents, $mime)
    {
     
        $base64   = base64_encode($contents);
        
        return ('data:' . $mime . ';base64,' . $base64);
    }

    调用

    //获得头像路径
    function getpicsrc()
    {
        $db=new db();
     
        $sql="select  *  from pictable";
       
        $res=$db->query($sql);
     
     
     
        $pic=$res[0];
      
        $src=data_uri($pic,'image/png');
     
     
        return $src;
    }

    显示图像

     

     $src=getpic($tel);//获得头像
     
    
    <img style="border-radius: 50%;" src="<?php echo $src;?>">

    可能遇到的问题:取出的图片显示不全

    这与php配置有关,修改一下Php.ini文件

    odbc.defaultlrl = 8M
    将图片转换为二进制流保存到数据库中image类型
    1根据图片路径将图片转化为二进制流
    
     //图片转二进制,$pic为图片路径
               $content=file_get_contents($pic);
    2获取的二进制进行格式化
       $content="0x".bin2hex($content);
    
    3插入数据表
                $sql="INSERT INTO[sPic]) VALUES ($content)";
    注意在使用Thinkphp自带的数据插入方法时总是报错,因为它会将spic的值自动加上单引号,插入的时候就被认为是字符串型,插入就会失败
    --------------------- 
    作者:liuhongwei_study 
    来源:CSDN 
    原文:https://blog.csdn.net/liuhongwei_study/article/details/41120443 
    版权声明:本文为博主原创文章,转载请附上博文链接!

     

     

     
     

     

    转载于:https://www.cnblogs.com/wrld/p/10501138.html

    展开全文
  • 以下是读取用户上传的文件,转换成二进制写入数据库:byte[] fileContent = new byte[0]; Stream fileInStream; int iSize = 0; iSize = FileAttachment.PostedFile.Conten
  • 今天研究了一下如何将图片已二进制形式存入数据库,然后再从中读取显示在页面上。下面我会贴出一些关键代码。 1.将图片存入数据库 前台代码: 后台代码: 需要的命名空间using System.Data.SqlClient; using...
  • ... JS: ...$('input[type=file]').on("change", function () { ...byteArray直接存入数据库就行了。 前台弄个列表,直接放个链接下载,很方便。 转载于:https://www.cnblogs.com/MoMo1002/p/9687357.html
  • <?php $file = 'abcd.sqlite'; mysql_connect('localhost','root','123456'); mysql_select_db('zblog'); mysql_query('set names utf8'); /* $backup_stream = file_get_contents($file);...// var_d...
  • 以下是读取用户上传的文件,转换成二进制写入数据库: 读取文件转化为二进制写入数据库byte[]fileContent=newbyte[0];StreamfileInStream;intiSize=0;iSize=FileAttachment.PostedFi...
  • 是读取的数据库对应的图片字段,将其输出到页面上 byte[] obj =(byte[])ve.get(0).get(0);  byte[] bytes1 =(byte[])obj;  ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);   ...
  • 将图片以二进制形式存入数据库

    千次阅读 热门讨论 2010-06-17 18:10:00
    将图片以二进制形式存入数据库时,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery...
  • 上传图片时,数据库存储二进制,当普通用户首页展示图片时需要以流的方式展现,全程无文件存储目录,图片不保存在服务器。本demo以springmvc框架搭建,上传文件使用的是: @RequestParam MultipartFile myfile 2....
  • 二进制文件存入数据库 1。把二进制文件存放到字节数组中。 2。将字节数组转化为blob字段,存入Oracle数据库中。 1. public void test055() throws IOException { File inFile = new File("...
  • vs2010 MFC如何将Mat类型的矩阵序列化成二进制数据存入数据库中。
  • 在sql sever 2008中建立一个表,设计为:ID(vcha型),image(image型)。 ID列我已经存入相应的数据。 但是image的值怎样存入数据库? 我在C#,在vs2010中,想实现,如何实现?
  • 定义//二进制流文件转换为图片base64格式function data_uri($contents, $mime) {$base64 = base64_encode($contents);return ('data:' . $mime . ';base64,' . $base64);}调用//获得头像路径function getpicsrc(){$...
  • 这段代码是可以吧本地图片文件转换成二进制数据。 //打开加载本地图片并把他转化为二进制文件 private void Button_Click_1(object sender, RoutedEventArgs e) { Stream phpto = null; int length; OpenFileDialog ...
  • //保存图片到数据库的php代码 复制代码 代码如下: If($Picture != “none”) { $PSize = filesize($Picture); $mysqlPicture = addslashes(fread(fopen($Picture, “r”), $PSize)); mysql_connect($host,$...
  • //将RichTextBox的内容直接写入数据库: private void button1_Click(object sender, EventArgs e) ......{ System.IO.MemoryStream mstream = new System.IO.MemoryStream(); this.richTextBox1.Save...
  • 二进制存入读取数据库

    千次阅读 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;  ...
  • 通过二进制数据流的方式,读写图片,把图片存入数据库,再从数据库读取出来显示 通过二进制数据流的方式,读写图片,把图片存入数据库,再从数据库读取出来显示
  • 做项目需要,自己写的。可以批量选择一个文件夹中的图片并按指定序号存入数据库中,代码是C#写的,选图片时要注意逆向选,这样存到数据库中才是正确的顺序(可以看哪个显示选择文件的对话框,里面有文件顺序)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,037
精华内容 14,014
关键字:

二进制数据存入数据库