扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
换成了gbk后,输出结果还是问号。
创新互联建站专注于巴里坤哈萨克企业网站建设,响应式网站设计,商城系统网站开发。巴里坤哈萨克网站建设公司,为巴里坤哈萨克等地区提供建站服务。全流程定制网站,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
这种情况, 你需要在 VS2010 那里, 修改 数据库连接字符串, 增加 编码的参数。
例如下面这个是 utf8 的
Server=192.168.56.101;Database=test_utf8;Uid=test_user;Pwd=testpassword; charset=utf8
那么你就需要把 最后的 charset=utf8 修改为 charset=gbk
你的意思,java不直接hibernate而是cmd用高级语言调用低级语言再操作数据库数据库是吗?这个想法~~~这个需求是干什么的,那些代码又在来完成,如果是本季,那我给出来的命令足够你用,如果在服务器上,那你怎么看java的跨平台行,cmd不是所有系统都可以的,除非你认为跨平台没用,那么你就不该选择java ,c和汇编,甚至性0,1更适合你
连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)
断开:exit (回车)
创建授权:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"
修改密码:mysqladmin -u用户名 -p旧密码 password 新密码
删除授权: revoke select,insert,update,delete om *.* from test2@localhost;
显示数据库:show databases;
显示数据表:show tables;
显示表结构:describe 表名;
创建库:create database 库名;
删除库:drop database 库名;
使用库:use 库名;
创建表:create table 表名 (字段设定列表);
删除表:drop table 表名;
修改表:alter table t1 rename t2
查询表:select * from 表名;
清空表:delete from 表名;
备份表: mysqlbinmysqldump -h(ip) -uroot -p(password) databasename tablename tablename.sql
恢复表: mysqlbinmysql -h(ip) -uroot -p(password) databasename tablename tablename.sql(操作前先把原来表删除)
增加列:ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c);
修改列:ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
删除列:ALTER TABLE t2 DROP COLUMN c;
备份数据库:mysql\bin\mysqldump -h(ip) -uroot -p(password) databasename database.sql
恢复数据库:mysql\bin\mysql -h(ip) -uroot -p(password) databasename database.sql
复制数据库:mysql\bin\mysqldump --all-databases all-databases.sql
修复数据库:mysqlcheck -A -o -uroot -p54safer
文本数据导入: load data local infile \"文件名\" into table 表名;
数据导入导出:mysql\bin\mysqlimport database tables.txt
有时为了性能,我们会直接用C语言来开发相关的模块,尤其在我们的web应用中,虽然PHP、JSP等脚本均提供了MySQL的接口,但是显然直接使用C语言具有更好的安全性和性能,Michael以前用PHP开发的多个项目中就使用了C语言编写的这类接口,然后再编译到php里面,供php脚本直接使用,这方面的话题就不多说了,下面主要说一下在Linux下如何用C语言连接MySQL数据库,并且读取里面的数据返回,同时如何进行编译。 if defined(_WIN32) || defined(_WIN64)为了支持windows平台上的编译#includewindows.h#endif#includestdio.h#includestdlib.h #includemysql.h 我的机器上该文件在/usr/local/include/mysql下 定义MySQL数据库操作的宏,也可以不定义留着后面直接写进代码 defineSELECT_QUERYselectusernamefromtbb_userwhereuserid=%dintmain(intargc,char**argv)char**argv相当于char*argv[]{MYSQL mysql,*sock;定义数据库连接的句柄,它被用于几乎所有的MySQL函数 MYSQL_RES *res;查询结果集,结构类型 MYSQL_FIELD *fd ;包含字段信息的结构 MYSQL_ROW row ;存放一行查询结果的字符串数组 char qbuf[160];存放查询sql语句字符串 if(argc!=2){//检查输入参数 fprintf(stderr,usage:mysql_selectuserid\n\n);exit(1);}mysql_init(mysql);if(!(sock=mysql_real_connect (mysql,localhost,dbuser,dbpwd,9tmd_bbs_utf8,0,NULL,0))){ fprintf(stderr,Couldn'tconnecttoengine!\n%s\n\n,mysql_error(mysql));perror();exit(1);}sprintf(qbuf,SELECT_QUERY,atoi(argv[1])); if(mysql_query(sock,qbuf)){ fprintf(stderr,Queryfailed(%s)\n,mysql_error(sock));exit(1);}if(!(res=mysql_store_result(sock))){fprintf(stderr,Couldn'tgetresultfrom%s\n,mysql_error(sock));exit(1);}printf(numberoffieldsreturned:%d\n,mysql_num_fields(res));while(row=mysql_fetch_row(res)){printf(Theruserid#%d'susernameis:%s\n,atoi(argv[1]),(((row[0]==NULL)(!strlen(row[0])))?NULL:row[0])); puts(queryok!\n);}mysql_free_result(res); mysql_close(sock);exit(0);return0;为了兼容大部分的编译器加入此行} 编译的时候,使用下面的命令 gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 后面两个选项可选,根据您的环境情况运行的时候,执行下面的命令 ./mysql_select 1 将返回如下结果: numberoffieldsreturned:1 Theruserid#1'susernameis:Michaelqueryok!上面的代码我想大部分都能看明白,不明白的可以参考一下MySQL提供的有关C语言API部分文档源码天空 ,各个函数都有详细说明,有时间我整理一份常用的API说明出来。
需要一个记录集控件
然后
记录集1.打开 (“select 条形码,sum(数量) as 统计数量 into 统计表 from lv group by 条形码”, 1)
记录集1.读文本 (“这里输入字段名”, 这里新建一个变量类型看你的数据库定义的类型)
另外 记录集1. 点后面还有读整数 读日期的 根据您的需要填
1、首先我们建立一个表表的数据,这个表里有25条数据,id从1到25。(下图是部分截图)
2、要分页数据,首先我们假设一页有10条数据,我们可以用mysql的limit关键字来限定返回多少条数据。并且用orderby来排序数据,这里用id来排序。所以第一页的sql可以如图这样写。
3、执行后得到的数据如图,就是id从1到10的前10条数据,因为我们是按id升序来排序的。
4、上面第一页的sql是简化的写法,完整的写法如图,得到的结果和上图的一模一样。代码里limit0,10的意思是从第一条数据开始,取10条数据。(注意的是第一条数据是从0开始的)
5、那么第二页的数据,关键是要知道是从哪一条数据开始,可以用这个公式得到:(页码-1) *每页显示多少条,即(2-1)*10=10,所以sql语句如图,limit10,10。
6、执行后,结果正确,得到id从11到20的10条数据。
7、同理第三页数据的sql如图,br/就是limit20,10。
8、查询的结果如图,因为这页只剩下5条数据了,所以只显示5条数据。如果你有更多页的数据,后面的数据只需要按上面的公式,得到从哪行开始,就可以写对应的sql语句了。
你的问题太泛泛了,“MYSQL的程序”你指的是什么?是MYSQL的 存储过程??您最好是具体问题具体问,你这样提问的话大家都不知道你想要什么!
mysql soure example.sql里的soure写错了应该是source!!!!example.sql是你实现先编辑好的文本内容,内容可以是创建一个数据库,然后再数据库下建立一个或多个数据表,再往表里插入一些记录!!然后再写个存储过程完成一些简单的功能,比如把A表里的内容插入到B表等等(可以加内容存在就修改不存在就插入等判断)!!建立一个.SQL文件就是为了方便!!随便举个例子:在D盘根目录下用记事本建立个example.sql文件,内容如下:
CREATE database name ;
use name;
CREATE TABLE a (
user_id int(11) DEFAULT NULL,
name char(11) DEFAULT NULL,
UNIQUE KEY USER_ID (user_id)
);
insert into a (user_id,name) values (1,'aaa'),(2,'bbb');
CREATE TABLE b (
user_id int(11) DEFAULT NULL,
name char(11) DEFAULT NULL,
UNIQUE KEY USER_ID (user_id)
);
insert into b (user_id,name) values (1,'xxx'),(3,'ccc');
DELIMITER $$
DROP PROCEDURE IF EXISTS qq$$
CREATE PROCEDURE qq()
begin
declare p_user_id varchar(6);
declare p_name varchar(6);
declare cursor_flag int default 0;
declare user_nrb cursor for select user_id,name from a;
declare continue handler for sqlstate '02000' set cursor_flag = 1;
open user_nrb;
repeat
fetch user_nrb into p_user_id,p_name;
if not cursor_flag then
if not exists (select * from b where user_id=p_user_id) then
insert into b(user_id,name)values(p_user_id,p_name);
else
update b set name=p_name where user_id=p_user_id;
end if;
end if;
until cursor_flag end repeat;
close user_nrb;
end$$
DELIMITER ;
顺序是建立名为name的数据库,其下建立俩表A和B,为A表插入用户1和2,为B表插入用户1,3!!再建立名为QQ的存储过程,功能是把a表的用户导入到B表,如果A的用户号再B里没有直接插入,如果A里的用户号已经在B表里了那就改变B表里相应用户的名字!!大概是这么个过程!!在MYSQL自带的客户端导入刚才建立的example.sql文件,顺序是:开始——程序——MYSQL——MYSQL SERVER5.1——MYSQL COMMAND LINE CLIENT 窗口里输入ROOT用户密码在光标处输入source d:\example.sql!!最后再执行存储过程,敲call qq;回车!!!
验证方法是敲select * from b;回车!!可以发现B表由本来插入的2条记录变成3条记录,而且用户1的名字也从xxx变成aaa了!!!!
希望对你有帮助!另外最重要的是MYSQL有一些很好的图形界面客户端工具,不用这个DOS界面的东西,下载个sqlyog什么的软件装上,基本一启动就会用了的东西!在SQLYOG的界面直接把example.sql里的内容复制过来粘贴后按F5键运行即可!!!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流