热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c#调用sqlite3.dll中的sqlite3_prepare_v2函数出错

在c#中声明是[DllImport(sqlite3.dll,EntryPointsqlite3_prepare_v2,CallingConventionCallingConv
在c#中声明是

[DllImport("sqlite3.dll", EntryPoint = "sqlite3_prepare_v2", CallingConvention = CallingConvention.Cdecl)]
public static extern int sqlite3_prepare_v2(IntPtr db, string zSql, int nByte, out IntPtr ppStmpt, IntPtr pzTail);

当没有汉字时

query = "REPLACE into Train(cc,Sf,Fs,Zd,Ds) values('1010','1234','12:34','1010','02:41')";

是没有问题的,但是当使用汉字之后

query = "REPLACE into Train(cc,Sf,Fs,Zd,Ds) values('1010','济南','12:34','1010','02:41')";

调用

sqlite.sqllite.SQLite.sqlite3_prepare_v2(db, query, query.Length, out stmHandle, IntPtr.Zero) 

就会出错!我想把汉字插入该怎么处理?谢谢了

12 个解决方案

#1


sqlite3_prepare_v2
是否指定字符集

#2


引用 1 楼 ajaxtop 的回复:
sqlite3_prepare_v2
是否指定字符集
这个我也不清楚,我只是在往上下载的使用的,有谁清楚sqlite3.dll的使用的呀?

#3


有人会嘛?

#4


用 sqlite3_bind_text16
http://blog.csdn.net/a2619308/article/details/6830786

#5


引用 4 楼 sandy945 的回复:
用 sqlite3_bind_text16
http://blog.csdn.net/a2619308/article/details/6830786

在c#中怎么声明

int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));

#6


使用sqlite3_bind_text16可以插入了,但是在插入之后是乱码。。。

#7


你先用 utf-8 编码后存储

#8


引用 7 楼 sandy945 的回复:
你先用 utf-8 编码后存储

阿非,你好

UTF8Encoding utf8 = new UTF8Encoding();
Byte[] encodedBytes = utf8.GetBytes("济南");
String decodedString = utf8.GetString(encodedBytes);

if (sqlite.sqllite.SQLite.sqlite3_prepare_v2(db, query, query.Length, out stmHandle, IntPtr.Zero) != sqlite.sqllite.SQLite.SQLITE_OK)
{
  err = sqlite.sqllite.SQLite.sqlite3_errmsg(db);
}
if (sqlite.sqllite.SQLite.SQLITE_OK != sqlite.sqllite.SQLite.sqlite3_bind_text16(stmHandle, 1, decodedString, -1, IntPtr.Zero))
{
  err = sqlite.sqllite.SQLite.sqlite3_errmsg(db);
}


使用上面的代码之后还是乱码?请问怎么解决,谢谢了

#9


if(SQLITE_OK != sqlite3_bind_text16(lpdExcute,1,L"海马汽车",-1,SQLITE_STATIC))break;  
if(SQLITE_OK != sqlite3_bind_text(lpdExcute,2,"000572",-1,SQLITE_STATIC))break;  
--------------------
你可以搜索一下 L"海马汽车" 中的 L 是什么用途

这是中文和英文在存储时的区别

#10


该回复于2011-12-09 13:52:02被版主删除

#11


采用何种编码 和你打开时的编码也有关系

#12


sqlite3_bind_text函数:
int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));

C#声明:

public delegate void FPtr( IntPtr ptr);

DllImport("sqlite3.dll", EntryPoint = "sqlite3_bind_text", CallingConvention = CallingConvention.Cdecl)] 
public static extern int sqlite3_bind_text(IntPtr db,int num,string zSql, int nByte, FPtr fp); 



推荐阅读
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 详解 Qt 串口通信程序全程图文 (4)
    Qt串口通信程序全程图文是本文介绍的内容,本文一开始先讲解对程序的改进,在文章最后将要讲解一些重要问题。1、在窗口中加入一些组合框ComboBox&# ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
  • 本文详细介绍了 jQuery 的入门知识与实战应用,首先讲解了如何引入 jQuery 库及入口函数的使用方法,为初学者提供了清晰的操作指南。此外,还深入探讨了 jQuery 在实际项目中的多种应用场景,包括 DOM 操作、事件处理和 AJAX 请求等,帮助读者全面掌握 jQuery 的核心功能与技巧。 ... [详细]
  • 本文介绍了在 Android 平台上的图片上传工具类优化方案,重点讨论了如何通过设置 `MultipartEntity` 来实现图片的高效上传。具体实现中,通过自定义 `UserUploadServiceImpl` 类,详细展示了如何构建和发送包含图片数据的 HTTP 请求。此外,还探讨了如何处理上传过程中的常见问题,如网络异常和文件格式验证,以确保上传的稳定性和可靠性。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • Flutter中计算文本尺寸的方法
    在Flutter开发中,有时需要计算文本的宽度和高度。本文介绍了一种利用TextPainter类实现这一功能的方法。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
author-avatar
手机用户2602916737
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有