Skip to content

插入二进制数据示例

c#
string connStr = "DSN=XuguDB;USER=SYSDBA;PWD=SYSDBA;";
try
{
    OdbcConnection conn = new OdbcConnection(connStr);
    conn.Open();
    FileStream fs = new FileStream("in.png", FileMode.Open);
    byte[] data = new byte[fs.Length];
    fs.Read(data, 0, (int)fs.Length);
    fs.Close();

    OdbcCommand cmd = conn.CreateCommand();
    cmd.CommandText = "INSERT INTO MYTABLE(ID, NAME, IMG) VALUES(?,?,?)";

    cmd.Parameters.Add("ID", OleDbType.Integer).Value = 100;
    cmd.Parameters.Add("NAME", OleDbType.VarChar).Value = "张三";
    cmd.Parameters.Add("IMG", OleDbType.Binary).Value = data;
    int res = cmd.ExecuteNonQuery();
    Console.WriteLine(res == 1 ? "Insert successful" : "Insert failed");

    cmd.CommandText = "SELECT IMG FROM MYTABLE WHERE ID = 100";
    OdbcDataReader reader = cmd.ExecuteReader();
    reader.Read();
    byte[] buf = new byte[reader.GetBytes(0, 0, null, 0, int.MaxValue)];
    reader.GetBytes(0, 0, buf, 0, buf.Length);
    reader.Close();

    FileStream output = new FileStream("out.png", FileMode.Create, FileAccess.Write);
    output.Write(buf, 0, buf.Length);
    output.Close();
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}