|
本帖最后由 andy8496 于 2021-8-18 10:20 编辑
非常不好意思,又遇到一个问题。
在7#楼附件工程DB_Test/FortranCallC/Source Files/FortranCallC.f90中,生成数据文件的部分:
[Fortran] 纯文本查看 复制代码 istat = sqlite3_open(trim(filename)//""C, db)
sql = "CREATE TABLE MY_TABLE (ID INTEGER PRIMARY KEY AUTOINCREMENT, "// &
"DATA1 TEXT NOT NULL, " // &
"DATA2 TEXT )"
istat = sqlite3_exec(db, sql, c_null_funptr, c_null_ptr, ErrMsg)
istat = sqlite3_exec(db,"begin;",c_null_funptr, c_null_ptr, ErrMsg)
sql = "INSERT INTO MY_TABLE (DATA1,DATA2) VALUES (?,?);"C
istat = sqlite3_prepare_v2(db,sql,len_trim(sql),stmt,c_null_ptr)
do i=1,50
istat = sqlite3_bind_text(stmt, 1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 32, c_null_ptr);
istat = sqlite3_bind_text(stmt, 2, "0123456789", 16, c_null_ptr);
istat = sqlite3_step(stmt)
enddo
istat = sqlite3_finalize(stmt)
istat = sqlite3_exec(db,"commit;",c_null_funptr, c_null_ptr, ErrMsg)
istat = sqlite3_close(db)
如果在sqlite3_bind_text中像上文那样直接用字符串常量就没问题:
[Fortran] 纯文本查看 复制代码 istat = sqlite3_bind_text(stmt, 1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 32, c_null_ptr);
但是改成变量写进去的就是乱码,读出来的也是乱码了
[Fortran] 纯文本查看 复制代码 sss = “ABCDEFGHIJKLMNOPQRSTUVWXYZ” ! character(256) :: sss
istat = sqlite3_bind_text(stmt, 1, trim(sss)//""C 32, c_null_ptr);
能想到的原因有两个:
①字符串声明的有问题,或者类型不合适
②可能与编码有关
做了一些尝试,问题依旧。无奈再次求助!
|
|