mysql文件写入和读出数据库

  1. //写入文件到数据库 
  2.     static void insert()throws Exception 
  3.     { 
  4.         String sql ="insert into news (info) values (?)"
  5.         Connection conn=JdbcUtilSingle.getConnection(); 
  6.          
  7.         PreparedStatement pst=conn.prepareStatement(sql); 
  8.          
  9.         File file = new File("src/jdbc/test/day01/Jdbc01.java"); 
  10.         //这里不能用字节流,需要用字符流 
  11.         //InputStream inputstream = new BufferedInputStream(new FileInputStream(file)); 
  12.         Reader reader = new BufferedReader(new FileReader(file)); 
  13.          
  14.         //这里也不能再用setBinaryStream了 
  15.         //setBinaryStream(1, inputstream,(long)file.length()); 
  16.         pst.setCharacterStream(1, reader, (int)file.length()); 
  17.          
  18.         int i = pst.executeUpdate(); 
  19.          
  20.         System.out.println(i); 
  21.          
  22.         JdbcUtilSingle.free(null, pst, conn); 
  23.     } 
  24.     //读出数据库信息写入文件 
  25.     static void write()throws Exception 
  26.     { 
  27.         String sql="select * from news "
  28.         Connection conn=JdbcUtilSingle.getConnection(); 
  29.         PreparedStatement pst=conn.prepareStatement(sql); 
  30.         ResultSet rs=pst.executeQuery(); 
  31.          
  32.         File file = new File("output.java"); 
  33.          
  34.         while(rs.next()) 
  35.         { 
  36.             //Blob blob = rs.getBlob(1); 
  37.             //InputStream in = blob.getBinaryStream(); 
  38.             //上面兩行的作用和下面這行相同 
  39.             //InputStream in = rs.getBinaryStream(1); 
  40.             Reader reader = rs.getCharacterStream(1); 
  41.             //OutputStream out = new BufferedOutputStream(new FileOutputStream(file)); 
  42.             Writer writer = new BufferedWriter(new FileWriter(file)); 
  43.              
  44.             //这里也要换成字符数组 
  45.             //byte buff[]= new byte[1024]; 
  46.             char buff[]=newchar[1034]; 
  47.              
  48.             //寫入文件 
  49.             for(int i=0;(i=reader.read(buff))>0;) 
  50.             { 
  51.                 writer.write(buff, 0, i); 
  52.             } 
  53.         } 
  54.          
  55.         JdbcUtilSingle.free(rs, pst, conn); 
  56.          
  57.          
  58.     }  
http://jason521-wang-163-com.iteye.com/blog/1542295
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将图片写入数据库,你需要将其转换为二进制格式并将其存储在数据库的BLOB字段中。可以使用Python的Pillow库来打开、读取和转换图像文件。以下是将一张名为“image.png”的图片写入数据库的示例代码: ```python import mysql.connector from mysql.connector import Error from PIL import Image # 读取要写入的图片 img = Image.open('image.png') # 将图片转换为二进制格式 with open("image.bin", "wb") as f: f.write(img.tobytes()) # 连接数据库 try: conn = mysql.connector.connect(host='localhost', database='my_database', user='my_username', password='my_password') if conn.is_connected(): print('Connected to MySQL database') # 将二进制数据写入数据库 cursor = conn.cursor() sql_insert_blob_query = """ INSERT INTO my_table (id, image_data) VALUES (%s,%s)""" with open("image.bin", "rb") as f: image_blob = f.read() # 执行 SQL 语句并提交到数据库 cursor.execute(sql_insert_blob_query, (1, image_blob)) conn.commit() print("Image and file inserted successfully as a BLOB into MySQL table") except Error as e: print(e) finally: cursor.close() conn.close() ``` 要从数据库中读取图像,可以使用以下代码: ```python # 连接数据库 try: conn = mysql.connector.connect(host='localhost', database='my_database', user='my_username', password='my_password') if conn.is_connected(): print('Connected to MySQL database') # 从数据库中读取二进制数据 cursor = conn.cursor() sql_fetch_blob_query = """SELECT image_data FROM my_table WHERE id = %s""" cursor.execute(sql_fetch_blob_query, (1,)) record = cursor.fetchone() # 将数据转换为图像文件并保存到磁盘上 with open("image_out.png", "wb") as f: f.write(record[0]) except Error as e: print(e) finally: cursor.close() conn.close() ``` 这将从数据库中读取id为1的记录中的图像数据,并将其保存为名为“image_out.png”的文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值