使用jdbc连接sqlite3时,blob数据该怎么存入取出?

[code="java"]
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite://e:/hello.db");
Statement stmt = conn.createStatement();
[/code]

1个回答

我只能给你两个c#的代码,给你一点参考:

[code="java"]
public static Dictionary GetBlob(string dirPath)
{
Dictionary dic = new Dictionary();

        List<string> lst = new List<string>();
        string strSQL = "select * from Resource";
        SQLiteCommand cmd = Connection.CreateCommand();
        cmd.CommandText = strSQL;

        try
        {
            if (Connection.State != ConnectionState.Open)
                Connection.Open();
            SQLiteDataReader dataReader = cmd.ExecuteReader();

            while (dataReader.Read())
            {
                string itemId = dataReader["ID"].ToString();
                int nDataLen = (int)dataReader.GetBytes(1, 0, null, 0, 0);
                byte[] pbyData = new byte[nDataLen];
                dataReader.GetBytes(1, 0, pbyData, 0, nDataLen);
                string fileName = string.Format(Path.Combine(dirPath, itemId + ".zip"));
                dic[itemId] = fileName;
                FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
                fs.Write(pbyData, 0, nDataLen);
                fs.Close();
            }
            dataReader.Close();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            cmd.Dispose();
            Connection.Close();
        }
        return dic;
    }

    public static int InsertBlob(string cmdText, byte[] data)
    {
        SQLiteCommand command = new SQLiteCommand();
        int nRowCount = 0;
        try
        {
            if (Connection.State != ConnectionState.Open)
                Connection.Open();
            SQLiteParameter para = new SQLiteParameter("data", DbType.Binary);
            para.Value = data;
            command.Parameters.Add(para);
            command.Connection = Connection;
            command.CommandText = cmdText;
            command.CommandType = CommandType.Text;
            command.CommandTimeout = 30;
            nRowCount = command.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
        }
        finally
        {
            command.Dispose();
            Connection.Close();
        }
        return nRowCount;

    }

[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐