當前位置:首頁 » 操作系統 » 動態表資料庫

動態表資料庫

發布時間: 2023-05-30 04:05:20

1. 怎麼從資料庫中調出數據並生成動態圖表

JSP頁面中嵌入動態圖表的兩種方法 :在JSP頁面中插入Applet小程序 ;通過javaBean動態生成圖像。
JSP是一種廣泛應用的網頁設計技術 ,它是一種HTML和Java腳本混合的編程技術 ,它結合了HTML的靜態特性和Java語言的動態能力 ,因此用它進行動態網頁設計非常方便。在進行圖像處理時 ,一般處理靜態圖片非常容易 ,但是 ,在實際應用中常常需要動態地盯乎在網頁中生成二維的圖形.
基於JFreeChart開發的一個時序圖的繪制。代碼如下:
實例中createDataset()方法用於創御鄭建數據集合對象。時序圖的數據集合與其他數據集合不同,它需要添加一個時間段內的鎮則頌所有數據,通常採用TimeSeries類進行添加。該實例中通過Math類的random()方法進行隨機生成。
import java.awt.*;
import java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import
java.io.DataInputStream;
import java.io.FileOutputStream;
import
java.io.IOException;
import java.net.URL;
import
java.net.URLConnection;
import java.text.DateFormat;
import
java.text.ParseException;
import java.text.SimpleDateFormat;
import
java.util.Calendar;
import java.util.Date;
import java.util.Random;
import javax.swing.JApplet;
import javax.swing.Timer;
import org.jfree.chart.*;
import
org.jfree.chart.annotations.CategoryTextAnnotation;
import
org.jfree.chart.axis.CategoryAnchor;
import
org.jfree.chart.axis.CategoryAxis;
import
org.jfree.chart.axis.CategoryLabelPositions;
import
org.jfree.chart.axis.DateAxis;
import
org.jfree.chart.axis.DateTickUnit;
import
org.jfree.chart.axis.DateTickUnitType;
import
org.jfree.chart.axis.ValueAxis;
import
org.jfree.chart.labels.;
import
org.jfree.chart.plot.CategoryPlot;
import
org.jfree.chart.plot.PlotOrientation;
import
org.jfree.chart.plot.XYPlot;
import
org.jfree.chart.renderer.category.BarRenderer;
import
org.jfree.chart.title.TextTitle;
import
org.jfree.data.category.CategoryDataset;
import
org.jfree.data.category.IntervalCategoryDataset;
import org.jfree.chart.axis.NumberAxis;
import
org.jfree.data.category.DefaultCategoryDataset;
import
org.jfree.data.gantt.Task;
import org.jfree.data.gantt.TaskSeries;
import
org.jfree.data.gantt.TaskSeriesCollection;
import
org.jfree.data.time.Day;
import org.jfree.data.time.Second;
import
org.jfree.data.time.TimeSeries;
import
org.jfree.data.time.TimeSeriesCollection;
import
org.jfree.data.xy.XYDataset;
public class shixutu extends JApplet {

//PLOT_FONT是一靜態的字體常量對象,使用此對象可以避免反復用到的字體對象被多次創建

private static final Font PLOT_FONT = new Font("黑體", Font.ITALIC ,
18);
JFreeChart chart;
//創建數據動態更新的監聽
class DataGenerator extends Timer
implements ActionListener {

private static final long serialVersionUID =
3977867288743720504L;
String
equID;
//設備ID號
int
totalTask;
//任務數
String[][]
strTask;
//任務情況
public void
actionPerformed(ActionEvent actionevent) {
addTotalObservation();
} DataGenerator()
{

super(1000,
null);

addActionListener(this);

System.out.println("super");

}
}

//將更新的數據添加到chart中
private void addTotalObservation()
{

System.out.println("addTotalObservation");

//設置新的數據集

chart.getXYPlot().setDataset(createDataset());

//通知Jfreechart
數據發生了改變,重新繪制柱狀圖
if
(chart != null)
{

chart.fireChartChanged();

}
}
private static void
processChart(JFreeChart chart)
{

//設置標題字體

chart.getTitle().setFont(new Font("隸書", Font.BOLD,
26));

//設置背景色

chart.setBackgroundPaint(new
Color(252,175,134));

XYPlot plot = chart.getXYPlot();
//獲取圖表的繪制屬性

plot.setDomainGridlinesVisible(false);
//設置網格不顯示

//獲取時間軸對象

DateAxis dateAxis = (DateAxis)
plot.getDomainAxis();

dateAxis.setLabelFont(PLOT_FONT);
//設置時間軸字體

//設置時間軸標尺值字體

dateAxis.setTickLabelFont(new
Font("宋體",Font.PLAIN,12));

dateAxis.setLowerMargin(0.0);
//設置時間軸上顯示的最小值

//獲取數據軸對象

ValueAxis valueAxis =
plot.getRangeAxis();

valueAxis.setLabelFont(PLOT_FONT);
//設置數據字體

DateFormat format = new SimpleDateFormat("mm分ss秒");
//創建日期格式對象

//創建DateTickUnit對象

DateTickUnit dtu = new
DateTickUnit(DateTickUnitType.SECOND,30,format);

dateAxis.setTickUnit(dtu);
//設置日期軸的日期標簽 } //將結果輸出在文件中
private static
void writeChartAsImage(JFreeChart chart)
{

FileOutputStream fos_jpg =
null;

try
{

fos_jpg = new
FileOutputStream("D:\\test\\shixutu.jpg");

ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 400, 300,
null);

} catch (Exception e)
{

e.printStackTrace();

} finally
{

try
{

fos_jpg.close();

} catch (Exception e)
{

}

}

}

//創建數據集合對象

public static XYDataset createDataset()
{

//實例化TimeSeries對象

TimeSeries timeseries = new
TimeSeries("Data");

Second second = new Second();
//實例化Day

double d =
50D;

//添加一年365天的數據

for (int i = 0; i < 500; i++)
{

d = d + (Math.random() - 0.5) * 10;
//創建隨機數據

timeseries.second(day, d);
//向數據集合中添加數據

second = (Second)
second.next();

}
TimeSeriesCollection timeSeriesCollection =
new
TimeSeriesCollection(timeseries);

//返回數據集合對象

return timeSeriesCollection; } //Applet程序初始化
public void init()
{
// 1.
得到數據
XYDataset dataset =
createDataset();

// 2.
構造chart

chart =
ChartFactory.createTimeSeriesChart(

"時序圖示範", //
圖表標題

"時間", //
目錄軸的顯示標簽--橫軸

"數值", //
數值軸的顯示標簽--縱軸

dataset, //
數據集

false,

false, //
是否生成工具

false //
是否生成URL鏈接

);

// 3.
處理chart中文顯示問題

processChart(chart);

// 4.
chart輸出圖片

//writeChartAsImage(chart);

// 5. chart
以swing形式輸出

//6.使用applet輸出

ChartPanel chartPanel = new
ChartPanel(chart);

chartPanel.setPreferredSize(new
java.awt.Dimension(800,500));

getContentPane().add(chartPanel); (new
DataGenerator()).start();

}

public void
paint(Graphics g)
{
if
(chart != null)
{

chart.draw((Graphics2D) g,
getBounds());

}
}

public void destroy() {
}
}

2. 如何創建動態的sqlite資料庫表

public FontDaoImpl(){
//在簡腔構造方法里邊進行判斷,看是否在sqlite里邊迅租有tb_font這張表,如果沒有的話,在sqlite裡面自動創建表
try {
conn = DBConnection.getConnection(Constants.DATABASE_PATH_STYLE);
final int cnt = conn
.prepareStatement(
"SELECT COUNT(*) as CNT FROM sqlite_master where type='table' and name='TB_FONT'"攔昌衫)
.executeQuery().getInt(1);
if (cnt != 1) {
statement = conn.createStatement();
statement
.execute("CREATE TABLE TB_FONT (id integer primary key autoincrement, name NVARCHAR2(20),description NVARCHAR2(1000),fontSize number(20),textBorderColor NVARCHAR2(10),textBackgroundColor NVARCHAR2(10),textColor NVARCHAR2(10),isDefault NVARCHAR2(4))");
//statement.execute("CREATE UNIQUE INDEX id ON TB_CURVELINE (id)");
statement.close();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBConnection.closeConnection(conn);
}

}

3. 如何設計動態欄位的產品資料庫表

可以採用四種技術:

動態增加資料庫表欄位

預留足夠的空白欄位,運行時作動態影射

用xml格式保存在單欄位里

改列為行,用另外一個表存放定製欄位

【一】

現在我們來分析一下四種技術的優劣,不過首先可以排除的是第一點動態增加欄位的方法,因為在實際操作時候幾乎是不可能的(sqlserver太慢,oracle索性不支持),基本可以不討論就排除。剩耐段下後三點。

【二】

先來討論預留空白欄位的方法,基本原理就是在資料庫表設計的時候加入一些多餘的欄位,看下面的代碼:

CREATE TABLE Sample(

name varchar(12),field0 varchar(1),field1 varchar(1),fieldN varchar(1)

}

然後看實際運行時候的需要,動態分配欄位給系統使用,也許需要一個這樣的結構來描述分配情況:

public class Available

{

public int ;

public Hashtable ;

}

也許某一時刻的數據狀況是這樣的: =3,哈西表包含內容是("field0"="SomeId", "field1"="AnyName","field2=IsOk")

現在的問題是如果要配合Hibernate,如何來處理?以上段的數據使用狀況為例子,如果我們的類定義是這樣:

public class Entity01、{

public string Name;

public string SomeId;

public string AnyName;

public bool IsOk;

}

也許只需要修改一下xxx.hbm.xml,把 SomeId 和 field0

做成對應就ok了。但是在運行時我們怎麼知道會有這樣的類定義?除非我們做動態代碼生成,自動編譯也許可以,但是問題也許就到其他方面去了;如果我們不用動態定義,那麼類就只能是這樣:

public class Entity01、{

public string Name;

public Hashtable ;

}

使用的時候,用 entity01..setValue("AnyName", "boss")

的方式來引用,也許這樣是修改最少的了,但是問題是Hibernate不支持這樣的方法。

【三】

再來討論單欄位存儲的方法,我們使用這樣的資料庫表定義

CREATE TABLE Sample

(

Name varchar(12),Xml CLOB(102400) // 僅作說明而已

)

然後對應這樣的類定義

public class Entity01、{

public string Name;

public string Xml;

public Hashtable ;

}

我們的代碼就可以這樣使用:string id =

entity01..getValue("SomeId")

了。這樣解決看起來很不錯,不僅不需要Available表,而且看起來Hibernate對它的支持也很完美,但是致命的問題在於:如果保持高效的查詢?除非資料庫系統本身對此有支持,否則就只能用低效的substring或者like做查詢,這在大批量數據中根本就不可行。

是不是折衷一下,把兩種方法的優點和起來?問題有來了:怎麼保持兩者之間數據的同步?難道要我們用存儲過程去解析xml內容?

所以,一個兩難的問題,需要我們認真去解決。我們通過認真的需求分析,也許可以減少可變欄位的數量,但是只要有一個可變欄位或者可變的可能性存在,我們始終要去解決這個兩難的問題。

期待繼續討論。

【四】

還有一種方法就是改列為行,用另外一個表存放擴展欄位,定義可以如下:

CREATE

TABLE

(

idSample Integer,fieldName varchar(30),fieldValue varchar(100)

)

其中idSample關聯到Sample表的id欄位(我沒有寫出來)。這樣的話,Hibernate很容易支持,也可以支持Sql的查詢,而且可以支持把內容放到Hashtable中去,看起來是目前最好的方式了。但是在大容量數據的時候,表的昌中譽數據會是主表數據量的N倍(看定製的欄位數目多少而定),同樣存在有很嚴重的培如性能問題。

4. VB6.0動態創建資料庫和表

引用:Microsoft DAO 3.6 Object Library

創建資料庫:
Set f = DBEngine.CreateDatabase(App.Path + "\DB.mdb", dbLangChineseSimplified)'(僅適用鍵散豎於Access)

創建表要用到SQL語句,如果你有這方面的基礎就會很容易做到的。
首先,連接到資料庫:
Set db = OpenDatabase(App.Path + "\DB.mdb")
然後執行創建表的SQL語句:
db.Execute SqlString'SqlString是創稿大建表的SQL語句
如果你沒有SQL創建表的語掘櫻句基礎,建議先學一學,很簡單的。
Create Table ……

如果要Q,用網路Hi給我留言

5. 請問怎樣動態生成資料庫中的表

首先你的資料庫要生成叢嘩目錄樹的庫的結構是什麼樣的呢?
你這樣比較難回答啊。

最普遍的就是
目錄樹表結構 treetable
父id 名稱 所屬父類id
1 我是1 0
2 我是2 0
3 我是3 1
4 我是4 1

set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
set rscat = server.createobject("adodb.recordset")
sqlcat="select * from treetable where 所屬父類id=0"
rscat.open sqlcat,conn,1,1
do while not rscat.eof
colparam1=rscat("父id")
softcat="<tr><td width=""20%""><strong></strong></td><td width=""*"">"
set rsclass = server.createobject("adodb.recordset")
sqlclass="select * from treetable where 所屬父類id=" &colparam1& ""
rsclass.open sqlclass,conn,1,1
if not(rsclass.bof and rsclass.eof) then
do while not rsclass.eof
softclass="---"&rsclass("名稱")&" "
softclass2=softclass2+softclass
rsclass.movenext
loop
else
softclass2="暫無子類"
end if
rsclass.close
set rsclass=nothing
catclasslist=catclasslist+softcat+softclass2+"</td></tr>"
softclass2=""
rscat.movenext
loop
rscat.close
set rscat=nothing

response.write catclasslist

最後得出的結果應滲卜行該弊並是
我是1
---我是3
---我是4
我是2
---暫無子類

有些代碼你可能需要自己修改一下。
希望對你有幫助。

6. mysql的靜態表和動態表的區別,MyISAM和InnoDB的區別

MyISAM是MySQL的默認資料庫引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然性能極佳,但卻有一個缺點:不支持事務處理(transaction)。不過,在這幾年的發展下,MySQL也導入了InnoDB(另一種資料庫引擎),銷咐以強化參考完整性與並發違規處理機制,後來就逐漸取代MyISAM。
InnoDB,是MySQL的資料庫引擎之一,為MySQL AB發布binary的標准之一。InnoDB由Innobase Oy公司所開發,2006年五月時由甲骨文公司並購。與傳統的ISAM與MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事務(Transaction)功能,類似於PostgreSQL。目前InnoDB採用雙軌制授權,一是GPL授權,另一是專有軟體授權。
MyISAM與InnoDB的區別是什麼?
1、 存儲結構
MyISAM:每個MyISAM在磁碟上存儲成三個文件。第一個文件的名字以表的名字開始,擴展名指出文件類型。.frm文件存儲表定義。數據文件的擴展名為.MYD (MYData)。索引文件的擴展名是.MYI (MYIndex)。
InnoDB:所有的表都保存在同一個數據文件中(也可能是多個文件,或者是獨立的表空間文件),InnoDB表的大小隻受限於操作系統文件的大小,一般為2GB。
2、 存儲空間
MyISAM:可被壓縮,存儲空間較小。支持三種不同的存儲格式:靜態表(默認,但是注意數據末尾不能有空格,會被去掉)、動態表、壓縮表。
InnoDB:需要更多的內存和存儲,它會在主內存中建立其專用的緩沖池用於高速緩沖數據和索引。
3、 可移植性、備份及恢復
MyISAM:數據是以文件的形式存儲,所以在跨平台的數據轉移中會很方便。在備份和恢復時可單獨針對某個表進行虧畝純操作。
InnoDB:免費的方案可以是拷貝數據文件、備份 binlog,或者用 mysqlmp,在數據量達到幾十G的時候就相對痛苦了。
4、 事務支持
MyISAM:強調的是性能,每次查詢具有原子性,其執行數度比InnoDB類型更快,但是不提供事務支持。
InnoDB:提供事務支持事務,外部鍵等高級資料庫功能。 具有事務(commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)的事務安全(transaction-safe (ACID compliant))型表。
5、 AUTO_INCREMENT
MyISAM:可以和其他欄位一起建立聯合索引。引擎的自動增長列必須是索引,如果是組合索引,自動增長可以不是第一列,他可以根據前面幾列進行排序後遞增。
InnoDB:InnoDB中必須包含只有該欄位的索引。引擎的自動增長列必須是索引,如果是組合索引也必須是組合索引的第一列。
6、 表鎖差異
MyISAM:只支持表級鎖,用戶在操作myisam表時,select,update,delete,insert語句都會給表自動加鎖,如果加鎖以後的表滿足insert並發的情況下,可以在表的尾部插入新的數據。
InnoDB:支持事務和行級鎖,是innodb的最大特色。行鎖大幅度提高了多用戶並發操作的新能。但是InnoDB的行鎖,只是在WHERE的主鍵是有效的,非主鍵的WHERE都會鎖全表的。
7、 全文索引
MyISAM:支持 FULLTEXT類型的全文索引
InnoDB:不支持FULLTEXT類型的全文索引,但是innodb可以使用sphinx插件支持全文索引,並且效果更好。
8、 表主鍵
MyISAM:允許沒有任何索引和主鍵的表存在,索引都是保存行的地址。
InnoDB:如果沒有設定主鍵或者非空唯一索引,就會自動生成一個6位元組的主鍵(用戶不可見),數據是主索引的一部分,附加索引保存的是主索引的值。
9、 表的具體行數
MyISAM:保存有表的總行數,如果select count(*) from table;會直接取出出該值。
InnoDB:沒有保存表的總行數,如果使用select count(*) from table;就會遍歷整個表,消耗相當大,但是耐遲在加了wehre條件後,myisam和innodb處理的方式都一樣。
10、 CURD操作
MyISAM:如果執行大量的SELECT,MyISAM是更好的選擇。
InnoDB:如果你的數據執行大量的INSERT或UPDATE,出於性能方面的考慮,應該使用InnoDB表。DELETE 從性能上InnoDB更優,但DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除,在innodb上如果要清空保存有大量數據的表,最好使用truncate table這個命令。
11、 外鍵
MyISAM:不支持
InnoDB:支持
通過上述的分析,基本上可以考慮使用InnoDB來替代MyISAM引擎了,原因是InnoDB自身很多良好的特點,比如事務支持、存儲 過程、視圖、行級鎖定等等,在並發很多的情況下,相信InnoDB的表現肯定要比MyISAM強很多。另外,任何一種表都不是萬能的,只用恰當的針對業務類型來選擇合適的表類型,才能最大的發揮MySQL的性能優勢。如果不是很復雜的Web應用,非關鍵應用,還是可以繼續考慮MyISAM的,這個具體情況可以自己斟酌。

7. 如何用vb動態創建資料庫的表

For i = 2 To 6
tbl.Columns.Append "MyField"虛叢 & i, adInteger '表的第i個欄位滾譽差
Next i

可以大皮使用循環語句創建表

8. 如何在資料庫動態建表

動態建表首先需要了解Statement類
Statement 對象用 Connection 的方法createStatement 創建,例如
//創建連接對象
Connection connection = DBUtil.getConnection();
//創建Statement對象
Statement statement=connection.createStatement();
創建完之後通過執行以sql語句為參數的Statement的方法,來執行sql語句完成對資料庫的操作。
Statement共有三種方法,分別是 executeQuery、executeUpdate 和execute。
方法 executeQuery 用於產生單個結果集的語句,例如 SELECT 語句。
方法 executeUpdate 用於執行 INSERT、UPDATE 或 DELETE 語句以及 SQLDDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE語句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一個整數,指示受影響的行數(即更新計數)。對於CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零。如果沒有進行操作就返回-1。
方法 execute用於執行返回多個結果集、多個更新計數或二者組合的語句,我們不會需要該高級功能,所以本概述就不進行介紹了。
動態建表實例:
String tablename="WrongExpression";
sql = "create table "+tablename+"(time varchar(255),expression varchar(20),result varchar(20))";
int result = stmt.executeUpdate(sql);// executeUpdate語句會返回一個受影響的行數,如果返回-1就沒有成功

9. 動態資料庫表創建是什麼意思

類似用程寬慎序執行旁巧物這種sql語運液句,CREATE TABLE A(
A# varchar(10) PRIMARY KEY,
ANAME varchar(8) NOT NULL,
QTY varchar(14),
CITY varchar(20)
)

10. 什麼叫動態資料庫,什麼叫靜態資料庫

靜態數據是基本保持穩定的數據,比如一個單位的名稱、員工信息、系統參數等
動態數據是隨著時間的發展,常常變化的數據,比如日銷售額、年銷售額等等。
在數據分析中具體表現來看就是,如果這個資料庫的數據僅僅只有一個時間節點的,即可理解為靜態數據,又叫做橫截面數據,並且採用靜態數據的分析方法分析即可。
如果該資料庫中的數據包含不同時間進程的,比如時間包含多個月份,或者包含多個年份這樣的數據,就理解為動態數據,又叫縱截面數據,需要採用面板數據分析方法分析

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:639
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:84
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:310
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:793
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:344
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:212
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:812
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:366
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:592