換成了gbk后,輸出結(jié)果還是問號。
創(chuàng)新互聯(lián)建站專注于巴里坤哈薩克企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城系統(tǒng)網(wǎng)站開發(fā)。巴里坤哈薩克網(wǎng)站建設(shè)公司,為巴里坤哈薩克等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
這種情況, 你需要在 VS2010 那里, 修改 數(shù)據(jù)庫連接字符串, 增加 編碼的參數(shù)。
例如下面這個(gè)是 utf8 的
Server=192.168.56.101;Database=test_utf8;Uid=test_user;Pwd=testpassword; charset=utf8
那么你就需要把 最后的 charset=utf8 修改為 charset=gbk
你的意思,java不直接hibernate而是cmd用高級語言調(diào)用低級語言再操作數(shù)據(jù)庫數(shù)據(jù)庫是嗎?這個(gè)想法~~~這個(gè)需求是干什么的,那些代碼又在來完成,如果是本季,那我給出來的命令足夠你用,如果在服務(wù)器上,那你怎么看java的跨平臺行,cmd不是所有系統(tǒng)都可以的,除非你認(rèn)為跨平臺沒用,那么你就不該選擇java ,c和匯編,甚至性0,1更適合你
連接:mysql -h主機(jī)地址 -u用戶名 -p用戶密碼 (注:u與root可以不用加空格,其它也一樣)
斷開:exit (回車)
創(chuàng)建授權(quán):grant select on 數(shù)據(jù)庫.* to 用戶名@登錄主機(jī) identified by \"密碼\"
修改密碼:mysqladmin -u用戶名 -p舊密碼 password 新密碼
刪除授權(quán): revoke select,insert,update,delete om *.* from test2@localhost;
顯示數(shù)據(jù)庫:show databases;
顯示數(shù)據(jù)表:show tables;
顯示表結(jié)構(gòu):describe 表名;
創(chuàng)建庫:create database 庫名;
刪除庫:drop database 庫名;
使用庫:use 庫名;
創(chuàng)建表:create table 表名 (字段設(shè)定列表);
刪除表:drop table 表名;
修改表:alter table t1 rename t2
查詢表:select * from 表名;
清空表:delete from 表名;
備份表: mysqlbinmysqldump -h(ip) -uroot -p(password) databasename tablename tablename.sql
恢復(fù)表: 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;
備份數(shù)據(jù)庫:mysql\bin\mysqldump -h(ip) -uroot -p(password) databasename database.sql
恢復(fù)數(shù)據(jù)庫:mysql\bin\mysql -h(ip) -uroot -p(password) databasename database.sql
復(fù)制數(shù)據(jù)庫:mysql\bin\mysqldump --all-databases all-databases.sql
修復(fù)數(shù)據(jù)庫:mysqlcheck -A -o -uroot -p54safer
文本數(shù)據(jù)導(dǎo)入: load data local infile \"文件名\" into table 表名;
數(shù)據(jù)導(dǎo)入導(dǎo)出:mysql\bin\mysqlimport database tables.txt
有時(shí)為了性能,我們會直接用C語言來開發(fā)相關(guān)的模塊,尤其在我們的web應(yīng)用中,雖然PHP、JSP等腳本均提供了MySQL的接口,但是顯然直接使用C語言具有更好的安全性和性能,Michael以前用PHP開發(fā)的多個(gè)項(xiàng)目中就使用了C語言編寫的這類接口,然后再編譯到php里面,供php腳本直接使用,這方面的話題就不多說了,下面主要說一下在Linux下如何用C語言連接MySQL數(shù)據(jù)庫,并且讀取里面的數(shù)據(jù)返回,同時(shí)如何進(jìn)行編譯。 if defined(_WIN32) || defined(_WIN64)為了支持windows平臺上的編譯#includewindows.h#endif#includestdio.h#includestdlib.h #includemysql.h 我的機(jī)器上該文件在/usr/local/include/mysql下 定義MySQL數(shù)據(jù)庫操作的宏,也可以不定義留著后面直接寫進(jìn)代碼 defineSELECT_QUERYselectusernamefromtbb_userwhereuserid=%dintmain(intargc,char**argv)char**argv相當(dāng)于char*argv[]{MYSQL mysql,*sock;定義數(shù)據(jù)庫連接的句柄,它被用于幾乎所有的MySQL函數(shù) MYSQL_RES *res;查詢結(jié)果集,結(jié)構(gòu)類型 MYSQL_FIELD *fd ;包含字段信息的結(jié)構(gòu) MYSQL_ROW row ;存放一行查詢結(jié)果的字符串?dāng)?shù)組 char qbuf[160];存放查詢sql語句字符串 if(argc!=2){//檢查輸入?yún)?shù) 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;為了兼容大部分的編譯器加入此行} 編譯的時(shí)候,使用下面的命令 gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 后面兩個(gè)選項(xiàng)可選,根據(jù)您的環(huán)境情況運(yùn)行的時(shí)候,執(zhí)行下面的命令 ./mysql_select 1 將返回如下結(jié)果: numberoffieldsreturned:1 Theruserid#1'susernameis:Michaelqueryok!上面的代碼我想大部分都能看明白,不明白的可以參考一下MySQL提供的有關(guān)C語言API部分文檔源碼天空 ,各個(gè)函數(shù)都有詳細(xì)說明,有時(shí)間我整理一份常用的API說明出來。
需要一個(gè)記錄集控件
然后
記錄集1.打開 (“select 條形碼,sum(數(shù)量) as 統(tǒng)計(jì)數(shù)量 into 統(tǒng)計(jì)表 from lv group by 條形碼”, 1)
記錄集1.讀文本 (“這里輸入字段名”, 這里新建一個(gè)變量類型看你的數(shù)據(jù)庫定義的類型)
另外 記錄集1. 點(diǎn)后面還有讀整數(shù) 讀日期的 根據(jù)您的需要填
1、首先我們建立一個(gè)表表的數(shù)據(jù),這個(gè)表里有25條數(shù)據(jù),id從1到25。(下圖是部分截圖)
2、要分頁數(shù)據(jù),首先我們假設(shè)一頁有10條數(shù)據(jù),我們可以用mysql的limit關(guān)鍵字來限定返回多少條數(shù)據(jù)。并且用orderby來排序數(shù)據(jù),這里用id來排序。所以第一頁的sql可以如圖這樣寫。
3、執(zhí)行后得到的數(shù)據(jù)如圖,就是id從1到10的前10條數(shù)據(jù),因?yàn)槲覀兪前磇d升序來排序的。
4、上面第一頁的sql是簡化的寫法,完整的寫法如圖,得到的結(jié)果和上圖的一模一樣。代碼里limit0,10的意思是從第一條數(shù)據(jù)開始,取10條數(shù)據(jù)。(注意的是第一條數(shù)據(jù)是從0開始的)
5、那么第二頁的數(shù)據(jù),關(guān)鍵是要知道是從哪一條數(shù)據(jù)開始,可以用這個(gè)公式得到:(頁碼-1)?*每頁顯示多少條,即(2-1)*10=10,所以sql語句如圖,limit10,10。
6、執(zhí)行后,結(jié)果正確,得到id從11到20的10條數(shù)據(jù)。
7、同理第三頁數(shù)據(jù)的sql如圖,br/就是limit20,10。
8、查詢的結(jié)果如圖,因?yàn)檫@頁只剩下5條數(shù)據(jù)了,所以只顯示5條數(shù)據(jù)。如果你有更多頁的數(shù)據(jù),后面的數(shù)據(jù)只需要按上面的公式,得到從哪行開始,就可以寫對應(yīng)的sql語句了。
你的問題太泛泛了,“MYSQL的程序”你指的是什么?是MYSQL的 存儲過程??您最好是具體問題具體問,你這樣提問的話大家都不知道你想要什么!
mysql soure example.sql里的soure寫錯了應(yīng)該是source!!!!example.sql是你實(shí)現(xiàn)先編輯好的文本內(nèi)容,內(nèi)容可以是創(chuàng)建一個(gè)數(shù)據(jù)庫,然后再數(shù)據(jù)庫下建立一個(gè)或多個(gè)數(shù)據(jù)表,再往表里插入一些記錄?。∪缓笤賹憘€(gè)存儲過程完成一些簡單的功能,比如把A表里的內(nèi)容插入到B表等等(可以加內(nèi)容存在就修改不存在就插入等判斷)??!建立一個(gè).SQL文件就是為了方便!!隨便舉個(gè)例子:在D盤根目錄下用記事本建立個(gè)example.sql文件,內(nèi)容如下:
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的數(shù)據(jù)庫,其下建立倆表A和B,為A表插入用戶1和2,為B表插入用戶1,3?。≡俳⒚麨镼Q的存儲過程,功能是把a(bǔ)表的用戶導(dǎo)入到B表,如果A的用戶號再B里沒有直接插入,如果A里的用戶號已經(jīng)在B表里了那就改變B表里相應(yīng)用戶的名字??!大概是這么個(gè)過程!!在MYSQL自帶的客戶端導(dǎo)入剛才建立的example.sql文件,順序是:開始——程序——MYSQL——MYSQL SERVER5.1——MYSQL COMMAND LINE CLIENT 窗口里輸入ROOT用戶密碼在光標(biāo)處輸入source d:\example.sql!!最后再執(zhí)行存儲過程,敲call qq;回車?。?!
驗(yàn)證方法是敲select * from b;回車!!可以發(fā)現(xiàn)B表由本來插入的2條記錄變成3條記錄,而且用戶1的名字也從xxx變成aaa了!?。?!
希望對你有幫助!另外最重要的是MYSQL有一些很好的圖形界面客戶端工具,不用這個(gè)DOS界面的東西,下載個(gè)sqlyog什么的軟件裝上,基本一啟動就會用了的東西!在SQLYOG的界面直接把example.sql里的內(nèi)容復(fù)制過來粘貼后按F5鍵運(yùn)行即可?。?!