『壹』 java讀資料庫的數據存到哪裡
Java可以使用JDBC對資料庫進行讀寫。JDBC訪問一般分為如下流程:
1、載入JDBC驅動程序:
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機),
這通過java.lang.Class類的靜態方法forName(String className)實現。
例如:
try{
//載入Mysql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,載入驅動失敗!");
e.printStackTrace() ;
}
成功載入後,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL
?連接URL定義了連接資料庫時的協議、子協議、數據源標識。
?書寫形式:協議:子協議:數據源標識
協議:在JDBC中總是以jdbc開始
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
例如:(MySql的連接URL)
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。
3、創建資料庫的連接
?要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象,該對象就代表一個資料庫的連接。
?使用DriverManager的getConnectin(String url,String username,String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和密碼來獲得。
例如:
//連接MySql資料庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("資料庫連接失敗!");
se.printStackTrace() ;
}
4、創建一個Statement
?要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行資料庫存儲過程。通常通過CallableStatement實例實現。
具體的實現方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
5、執行SQL語句
Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate和execute
1、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句,返回一個結果集(ResultSet)對象。
2、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的語句。
具體實現的代碼:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、處理結果
兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些行中數據的訪問。
使用結果集(ResultSet)對象的訪問方法獲取數據:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1); // 此方法比較高效(列是從左到右編號的,並且從列1開始)
}
7、關閉JDBC對象
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:
1、關閉記錄集
2、關閉聲明
3、關閉連接對象
if(rs != null){ // 關閉記錄集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 關閉聲明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 關閉連接對象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
『貳』 C#聊天記錄在SQL中用什麼類型儲存好
直接用字元型的不就行了。
如果聊天記錄帶語音,圖片的,用特殊定義字元+文件存儲地址。
顯示的時候,如果有特殊定義的,再把相關文件載入。
『叄』 java 將數據保存到資料庫的問題 SQL語句
先將T表中得到的結果集存在數組中,最後是以javabean那樣的.然後得到name
id
sex
相對應然後插入進去!如果只是一條數據,那就更簡單了,直接用變數得到後,編寫插入的SQL語句,然後執行就行了
『肆』 用java,想寫一個web聊天的應用,使用session來儲存當前用戶嗎還是用線程聊天記錄放在哪裡
這個我剛剛研究說。如果信息是實時的,那就復雜了。
簡單的說,網頁上的實時聊天都是刷出來的,就是客戶端不停的提交請求給伺服器,看看有沒有最新信息。我也是剛開始學,所以性能上好不好我說的不一定對。只是個人看法。
最新的有web socket,據說這個性能上不錯,不過我試過了,ie瀏覽器的支持不好,好像10以後才支持,我測的8不行。火狐用著不錯。
先說傳統的ajax吧,最笨的實時聊天的方法就是定時用ajax刷,也就是5秒鍾刷一次,看看伺服器里有沒有新信息,ajax能給人一種靜態刷新的體驗,就是網頁不用刷新,新內容自己就蹦出來了。但是呢,非常明顯,如果用戶沒在操作就在這掛機呢,或者沒有新信息的時候,ajax發送了很多無用的請求。
至於這個推技術,我就看了dwr的推技術。有前輩說這個也是逃脫不了刷這個模式,只不過是封裝了一下。具體我沒研究。找了個demo自己測了一下。同一個瀏覽器打開的時候會產生一個session,也就是不管你在一個瀏覽器上打開多少窗口,你這個sessionid都是唯一的。同一個站點同一瀏覽器登錄多賬號,這個需求本身就不合理,這不明擺著讓用戶開小號呢么。先不說這個了,正題:
在我找的這個demo里,用戶身份是用sessionid區分,一對一的會話里,是要把所有session都遍歷一遍找到接受者的id,然後給這個頁面「推」。這個推你找個例子就明白了,它是可以在java底層裡面直接刷頁面的。具體怎麼實現,都有函數的。頁面怎麼刷就不用管了,dwr都封裝好了。
我也在糾結這個聊天記錄放到哪,人人網的聊天是入庫的,和留言板是一個功能,只不過聊天的都是悄悄話。像58同城就不是入庫的。
我想過用session,但是如果用戶很多的話,很占內存,內存溢出了就什麼都沒了。如果放cookie里,單個站點的cookie有大小限制的,好像是4K(忘了在哪看到的了)。
或者放資料庫里吧,如果不想存太多的話就定時清一下。其實也不麻煩的,用戶的在線狀態你是怎麼保存的?我測的時候,如果瀏覽器關閉,session其實是沒清除的。總要定期檢查用戶是否在線吧,session如何回收還要配置一下。
我想了一個方法把聊天窗口寫成一個iframe,不過還沒實施。
還有用長連接和flash的,不好意思我水平不夠,沒看懂
『伍』 在JAVA中的SQL語言
Transact_SQL小手冊
*******************Transact_SQL********************
--語 句 功 能
--數據操作
SELECT --從資料庫表中檢索數據行和列
INSERT --向資料庫表添加新數據行
DELETE --從資料庫表中刪除數據行
UPDATE --更新資料庫表中的數據
--數據定義
CREATE TABLE --創建一個資料庫表
DROP TABLE --從資料庫中刪除表
ALTER TABLE --修改資料庫表結構
CREATE VIEW --創建一個視圖
DROP VIEW --從資料庫中刪除視圖
CREATE INDEX --為資料庫表創建一個索引
DROP INDEX --從資料庫中刪除索引
CREATE PROCEDURE --創建一個存儲過程
DROP PROCEDURE --從資料庫中刪除存儲過程
CREATE TRIGGER --創建一個觸發器
DROP TRIGGER --從資料庫中刪除觸發器
CREATE SCHEMA --向資料庫添加一個新模式
DROP SCHEMA --從資料庫中刪除一個模式
CREATE DOMAIN --創建一個數據值域
ALTER DOMAIN --改變域定義
DROP DOMAIN --從資料庫中刪除一個域
--數據控制
GRANT --授予用戶訪問許可權
DENY --拒絕用戶訪問
REVOKE --解除用戶訪問許可權
--事務控制
COMMIT --結束當前事務
ROLLBACK --中止當前事務
SET TRANSACTION --定義當前事務數據訪問特徵
--程序化SQL
DECLARE --為查詢設定游標
EXPLAN --為查詢描述數據訪問計劃
OPEN --檢索查詢結果打開一個游標
FETCH --檢索一行查詢結果
CLOSE --關閉游標
PREPARE --為動態執行准備SQL 語句
EXECUTE --動態地執行SQL 語句
DESCRIBE --描述准備好的查詢
---局部變數
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
---全局變數
---必須以開頭
--IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' --列印字元串'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'
--CASE
use pangu
update employee
set e_wage =
case
when job_level = 』1』 then e_wage*1.08
when job_level = 』2』 then e_wage*1.07
when job_level = 』3』 then e_wage*1.06
else e_wage*1.05
end
--WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x --列印變數x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c --列印變數c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
--WAITFOR
--例 等待1 小時2 分零3 秒後才執行SELECT 語句
waitfor delay 』01:02:03』
select * from employee
--例 等到晚上11 點零8 分後才執行SELECT 語句
waitfor time 』23:08:00』
select * from employee
***SELECT***
select *(列名) from table_name(表名) where column_name operator value
ex:(宿主)
select * from stock_information where stockid = str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%' --------- ([]指定值的范圍)
stockname like '[^F-M]%' --------- (^排除指定范圍)
--------- 只能在使用like關鍵字的where子句中使用通配符)
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
order by 1,2 --------- by列號
stockname = (select stockname from stock_information where stockid = 4)
--------- 子查詢
--------- 除非能確保內層select只返回一個行的值,
--------- 否則應在外層where子句中用一個in限定符
select distinct column_name form table_name --------- distinct指定檢索獨有的列值,不重復
select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
select stockname , "stocknumber" = count(*) from table_name group by stockname
--------- group by 將表按行分組,指定列中有相同的值
having count(*) = 2 --------- having選定指定的組
『陸』 做一個聊天程序Java,怎麼將聊天記錄存到access資料庫裡面急。
用insert插入就可以了。
『柒』 JAVA的手機,比如QQ的用戶信息、聊天記錄文件都儲存在哪呢封裝在jar裡面嗎在Pc上打開卻沒有
I:.
如果你QQ是安裝在內存卡裡面的話那麼在電腦上打開你的內存卡並把隱藏的文件也調出來.system是系統的隱藏文件然後照最上面的路徑打開就有一堆QQ的文件,呵呵我也不知道哪個是記錄的文件~
另外你每安裝一個軟體都會生成一個MIDLet的文件你電話里可不一定是20007的你得挨個試試
『捌』 java手機上的QQ聊天記錄存在哪裡
1.網路收索 手機QQ聊天記錄查看器 下載 安裝到手機上 可以查看手機上所有QQ的聊天記錄
2.記錄保持在手機內存或儲存卡的根目錄下有個名為QQ或QQ_XXXX的文件夾里有所有Q號 下面的msg里是聊天記錄 記錄內容是以對方QQ號+.db 結尾的數據文件
『玖』 用java做一個聊天程序,怎麼實現保存聊天記錄的功能
如何實現要看你的聊天記錄是否有必要保存。比如淘寶上聊天記錄是要保存的 所以就要保存在資料庫中一方便日過作為證據。如果你的聊天只是一般的朋友聊天 那就沒有這個必要了。你可以保存在session中 。當然你說要有圖片什麼東西 就需要文件傳輸了。這寫東西一般都要限制最大值 不能超過了多少大小這樣子是為了保護伺服器安全。