最近发现基础很不给力啊,char*遇到的一些问题
2011-09-01 22:15
357 查看
接到任务,以前对于数据库访问是用Qt对postgresql进行操作,所以用到的也是Qt对于数据库操作的类
正题,一搜,其实如下所示,postgresql提供了C/C++的访问接口,虽然库是不同的,pq和pqxx,http://sns.linuxpk.com/blog-63568-17138.html。不过pqxx的参考代码不多,于是用pq库,当然,在eclipse里添加包含和添加lib是必须的了,具体的以后上图。
下面的任务是对C的这些调用进行封装。遇到第一个蛋疼的问题了,libpq的参考如下:http://www.pgsqldb.org/pgsqldoc-8.1c/libpq.html ,如函数PQsetdbLogin,和函数
PQconnectdb参数都是清一色的const char*,于是类成员也自然就成了char *;
由于需要的参数比如ip,比如端口,比如用户名,比如密码,都是char*,不过连接字符串只是一个char*,居然忘了怎么连接,字符串怎么连接?问个大一的也知道strcat啊,楼主居然忘了,去搜,居然有个用for循环判断一个个拷贝的。当时就疼了。好在问人终于搞定了,特别感谢万能的宰师兄啊。
半成品代码如下:
连接字符数组代码如下:
注意点:1.定义uname这些为字符数组,而没有用char*,因为需要用户输入,用char*开辟空间什么的,反而不方便,不开辟又会出错
2.len这种动态变化的,得用new开辟,不能直接定义dest[len]
3.第一个要strcpy,后面才能strcat,至于为了识别参数加上空格什么的,就简单了,不说了,过
4.定义的char[],传参时被当做char*处理,指针的好处啊,立现啊,哈哈
丢人啊,字符数组都忘了。。。ps:我ubuntu上的postgresql为毛就新建不了连接呢?明天搞,命名建了sa用户,命名密码对的,就是failed,哎
菜鸟goes on ~~~
QSqlDatabase m_db; if (m_db.open()) { qDebug("Database opened success"); } else { qCritical() << m_db.lastError().text(); qFatal("Database opened failed"); }看起来倒是很方便啊,问题是现在要暂时先打算如果不用qt呢,于是先把Qt相关的去掉,数据库暂时先还是继续用postgresql吧(果然我只是个技术储备,如同做flex,只是测试道路是否可行,后来改用了html5)
正题,一搜,其实如下所示,postgresql提供了C/C++的访问接口,虽然库是不同的,pq和pqxx,http://sns.linuxpk.com/blog-63568-17138.html。不过pqxx的参考代码不多,于是用pq库,当然,在eclipse里添加包含和添加lib是必须的了,具体的以后上图。
下面的任务是对C的这些调用进行封装。遇到第一个蛋疼的问题了,libpq的参考如下:http://www.pgsqldb.org/pgsqldoc-8.1c/libpq.html ,如函数PQsetdbLogin,和函数
PQconnectdb参数都是清一色的const char*,于是类成员也自然就成了char *;
由于需要的参数比如ip,比如端口,比如用户名,比如密码,都是char*,不过连接字符串只是一个char*,居然忘了怎么连接,字符串怎么连接?问个大一的也知道strcat啊,楼主居然忘了,去搜,居然有个用for循环判断一个个拷贝的。当时就疼了。好在问人终于搞定了,特别感谢万能的宰师兄啊。
半成品代码如下:
MyPost::MyPost() { name="sa"; addr="127.0.0.1" ; password=""; } void MyPost::set(char* uname="sa", char* uaddr="127.0.0.1", char* upass="") { name = uname; addr = uaddr; password = upass; }对于set函数,提供默认参数,以后修改为用户如不修改,好歹有个默认值。
连接字符数组代码如下:
char uname = "hello"; char uaddr = "world"; char upass = "fuck"; int len = strlen(uname)+strlen(uaddr)+strlen(upass); cout << len << endl; char *dest = new char[len]; strcpy(dest,uname); strcat(dest,uaddr); strcat(dest,upass);
注意点:1.定义uname这些为字符数组,而没有用char*,因为需要用户输入,用char*开辟空间什么的,反而不方便,不开辟又会出错
2.len这种动态变化的,得用new开辟,不能直接定义dest[len]
3.第一个要strcpy,后面才能strcat,至于为了识别参数加上空格什么的,就简单了,不说了,过
4.定义的char[],传参时被当做char*处理,指针的好处啊,立现啊,哈哈
丢人啊,字符数组都忘了。。。ps:我ubuntu上的postgresql为毛就新建不了连接呢?明天搞,命名建了sa用户,命名密码对的,就是failed,哎
菜鸟goes on ~~~
相关文章推荐
- 最近遇到的一些问题及发现
- 最近遇到的一些问题及发现
- 【最近面试遇到的一些问题】JSP中动态INCLUDE与静态INCLUDE的区别
- C++ 最近面试题中遇到的一些问题
- 最近遇到的DISCUZ一些问题解决方法
- 通过plsql 测试存储过程遇到的问题和学习到的一些基础知识整理
- 最近遇到的一些小问题总结
- 【最近面试遇到的一些问题】数据库连接池的优点和原理,常用的java开源连接池组件
- 最近oracle开发中遇到的一些问题及解决办法(二)待续
- 最近使用iScroll遇到的一些问题及最后的解决方法
- 31 最近遇到的一些问题汇总
- 25 最近遇到的一些问题汇总
- 【最近面试遇到的一些问题】Java中取小数点后两位(四种方法)
- 最近在用mvc3开发时遇到的一些小问题与解决方法....
- 最近在编写一些bat工具时,发现自己对lua的io和正则表达式使用没什么了解,网络上转载解决问题后的文章。
- 最近遇到的一些问题,看过的请留下建议
- 学习python基础语法中遇到的一些问题
- 最近遇到的一些问题以及解决方案
- 最近使用Qt遇到的一些小问题解决办法总结
- 最近写mapreduce程序从hbase中抽取程序遇到的一些问题