當前位置:首頁 » 數據倉庫 » 測試資料庫增刪改查的問題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

測試資料庫增刪改查的問題

發布時間: 2023-02-09 11:08:56

㈠ java求高手,怎樣隨時監測資料庫中數據的增刪改查

要看你是多大的項目,如果是比較大的項目,有必要泡在Unix上可以做shell腳本配成幾分鍾或者幾秒鍾就執行一次,裡面跑一些java或者perl的程序,如果比較小,這個就隨便了,開listener或者資料庫加個trigger什麼的都可以

㈡ xUnit如何鏈接資料庫測試簡單的增刪改查

1、這個界面能夠輸出(文字、圖片之類的)
2、界面後台能夠連接資料庫(crud操作)
實現上面兩點就可以實現了。 測試用例建議先做模塊單體測試,輸入數據
要涵蓋所有情況。單體測試之後集成測試。輸入大量數據 然後通過腳本測試,
根據輸出的log、輸出 判斷是否存在bug。--》之後就是該bug。循環,直到
沒有bug 或者 bug 幾乎沒有不影響。

㈢ .Net 資料庫增刪改查 麻煩速度給出代碼

假設我有個表叫tbUser有ID,UserName和PassWord三列,這個表在example資料庫裡面
增string str1="insert into tbUser (UserName,PassWord) values (@UserName,@PassWord)";
刪string str2="delete from tbUser where UserName=@UserName";(where後跟條件就是說,例如@UserName的參數添加了一個「A123456」的值那麼就刪除UserName==A123456的這一行整行的數據)
改string str3=」update tbUser set UserName=@UserName where ID=@ID「;(這里的where同上set後面跟的UserName=@UserName就是指定修改值)
查string str4=select UserName,PassWord from tbUser where ID=@ID(select後面from前面的內容為查找後顯示出來的內容,當然你什麼都不寫只寫*那就是顯示整行)
寫完sql語句就寫下連接語句
string connectionstring="Data Source=(local);Integrated Security=true;DataBase=example";
/////Data Source=(local)是指連接到本地的伺服器(即本機的)DataBase=tbUser是連接example資料庫
SqlConnection con=new SqlConnetion(connectionstring);
SqlCommand cmd=(str1,con);
cmd.Parameters.Add("@UserName", "A123456");/////給參數賦值,這里就只舉一個例子了
con.Open();////打開資料庫
using(cmd)/////括弧內放入SqlCommand對象SqlDataAdapter也是這類對象,using在執行完代碼塊後自動關閉資料庫
{
cmd.ExecuteNonQuery();//////執行非查詢語句
}
如果是查詢語句需要這樣
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataTable dt=new DataTable();
然後再using(da)
{
da.Fill(dt);////用DataTable來做容器
}
訪問DataTable的方法就是dt[0][0](第一行的第一列)注意要使用的話記得把dt裡面的object類型的數據強制轉換以後再使用。
希望對你有幫助

㈣ 用VB連接SQL server 2005實現對資料庫的增刪改查,我照書上寫的語句,全是錯誤,我菜鳥啊~~求大神幫幫~

照書上寫的語句,全是錯誤,主要是語法錯誤,你注意一下,就可以了。例如:

'判斷是否有相同內容的記錄
txtSQL = "select * from 出庫信息表 where rkno <>'" & Trim(Text1(0)) & "'and rkname='" & Trim(Text1(1)) & "'and rkaccount='" & Trim(Text1(2)) & "'"
Set mrc = executeSQL(txtSQL, MsgText)

應該改為:
'判斷是否有相同內容的記錄
txtSQL = "select * from 出庫信息表 where rkno <>'"" & Trim(Text1(0)) & ""'and rkname='"" & Trim(Text1(1)) & ""'and rkaccount="'" & Trim(Text1(2)) & "'"
Set mrc = executeSQL(txtSQL, MsgText)

這些錯誤,就是印刷時候的錯誤,或者是你輸入時候的錯誤,你得認真看準了。
"" 是錯的,應該是 """ .

㈤ 在android中對資料庫做增刪改查有兩種方式分別是sqlitedatabase這個類中的哪幾個

一、使用嵌入式關系型SQLite資料庫存儲數據
在Android平台上,集成了一個嵌入式關系型資料庫——SQLite,SQLite3支持NULL、INTEGER、REAL(浮點數字)、 TEXT(字元串文本)和BLOB(二進制對象)數據類型,雖然它支持的類型只有五種,但實際上sqlite3也接受varchar(n)、 char(n)、decimal(p,s) 等數據類型,只不過在運算或保存時會轉成對應的五種數據類型。 SQLite最大的特點是你可以把各種類型的數據保存到任何欄位中,而不用關心欄位聲明的數據類型是什麼。例如:可以在Integer類型的欄位中存放字元串,或者在布爾型欄位中存放浮點數,或者在字元型欄位中存放日期型值。 但有一種情況例外:定義為INTEGER PRIMARY KEY的欄位只能存儲64位整數, 當向這種欄位保存除整數以外的數據時,將會產生錯誤。 另外,在編寫CREATE TABLE 語句時,你可以省略跟在欄位名稱後面的數據類型信息,如下面語句你可以省略name欄位的類型信息:
CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))
SQLite可以解析大部分標准SQL語句,如:
復制代碼 代碼如下:

查詢語句:select * from 表名 where 條件子句 group by 分組字句 having ... order by 排序子句
如: select * from person
select * from person order by id desc
select name from person group by name having count(*)>1
分頁SQL與mysql類似,下面SQL語句獲取5條記錄,跳過前面3條記錄
select * from Account limit 5 offset 3 或者 select * from Account limit 3,5
插入語句:insert into 表名(欄位列表) values(值列表)。如: insert into person(name, age) values(『傳智',3)
更新語句:update 表名 set 欄位名=值 where 條件子句。如:update person set name=『傳智『 where id=10
刪除語句:delete from 表名 where 條件子句。如:delete from person where id=10

二、使用SQLiteOpenHelper對資料庫進行版本管理
我們在編寫資料庫應用軟體時,需要考慮這樣的問題:因為我們開發的軟體可能會安裝在很多用戶的手機上,如果應用使用到了SQLite資料庫,我們必須在用戶初次使用軟體時創建出應用使用到的資料庫表結構及添加一些初始化記錄,另外在軟體升級的時候,也需要對數據表結構進行更新。那麼,我們如何才能實現在用戶初次使用或升級軟體時自動在用戶的手機上創建出應用需要的資料庫表呢?總不能讓我們在每個需要安裝此軟體的手機上通過手工方式創建資料庫表吧?因為這種需求是每個資料庫應用都要面臨的,所以在Android系統,為我們提供了一個名為SQLiteOpenHelper的抽象類,必須繼承它才能使用,它是通過對資料庫版本進行管理來實現前面提出的需求。

為了實現對資料庫版本進行管理,SQLiteOpenHelper類提供了兩個重要的方法,分別是onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),前者用於初次使用軟體時生成資料庫表,後者用於升級軟體時更新資料庫表結構。當調用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法獲取用於操作資料庫的SQLiteDatabase實例的時候,如果資料庫不存在,Android系統會自動生成一個資料庫,接著調用onCreate()方法,onCreate()方法在初次生成資料庫時才會被調用,在onCreate()方法里可以生成資料庫表結構及添加一些應用使用到的初始化數據。onUpgrade()方法在資料庫的版本發生變化時會被調用,一般在軟體升級時才需改變版本號,而資料庫的版本是由程序員控制的,假設資料庫現在的版本是1,由於業務的變更,修改了資料庫表結構,這時候就需要升級軟體,升級軟體時希望更新用戶手機里的資料庫表結構,為了實現這一目的,可以把原來的資料庫版本設置為2(有同學問設置為3行不行?當然可以,如果你願意,設置為100也行),並且在 onUpgrade()方法裡面實現表結構的更新。當軟體的版本升級次數比較多,這時在onUpgrade()方法裡面可以根據原版號和目標版本號進行判斷,然後作出相應的表結構及數據更新。

getWritableDatabase()和 getReadableDatabase()方法都可以獲取一個用於操作資料庫的SQLiteDatabase實例。但 getWritableDatabase() 方法以讀寫方式打開資料庫,一旦資料庫的磁碟空間滿了,資料庫就只能讀而不能寫,倘若使用getWritableDatabase()打開資料庫就會出錯。getReadableDatabase()方法先以讀寫方式打開資料庫,如果資料庫的磁碟空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開資料庫。
注意:getWritableDatabase(),getReadableDatabase的區別是當資料庫寫滿時,調用前者會報錯,調用後者不會,所以如果不是更新資料庫的話,最好調用後者來獲得資料庫連接。
代碼:
復制代碼 代碼如下:

public class DatabaseHelper extends SQLiteOpenHelper {
//類沒有實例化,是不能用作父類構造器的參數,必須聲明為靜態
private static final String name = "ljqdb"; //資料庫名稱
private static final int version = 1; //資料庫版本
public DatabaseHelper(Context context) {
//第三個參數CursorFactory指定在執行查詢時獲得一個游標實例的工廠類,設置為null,代表使用系統默認的工廠類
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS person (
personid integer primary key autoincrement, name varchar(20), age INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(" ALTER TABLE person ADD phone VARCHAR(12) NULL "); //往表中增加一列
// DROP TABLE IF EXISTS person 刪除表
}
}

在實際項目開發中,當資料庫表結構發生更新時,應該避免用戶存放於資料庫中的數據丟失。
三、使用SQLiteDatabase操作SQLite資料庫
Android提供了一個名為SQLiteDatabase的類,該類封裝了一些操作資料庫的API,使用該類可以完成對數據進行添加(Create)、查詢(Retrieve)、更新(Update)和刪除(Delete)操作(這些操作簡稱為CRUD)。對SQLiteDatabase的學習,我們應該重點掌握execSQL()和rawQuery()方法。execSQL()方法可以執行insert、delete、update和CREATE TABLE之類有更改行為的SQL語句; rawQuery()方法用於執行select語句。
execSQL()方法的使用例子:
復制代碼 代碼如下:

SQLiteDatabase db = ....;
db.execSQL("insert into person(name, age) values('林計欽', 24)");
db.close();

執行上面SQL語句會往person表中添加進一條記錄,在實際應用中, 語句中的「林計欽」這些參數值會由用戶輸入界面提供,如果把用戶輸入的內容原樣組拼到上面的insert語句, 當用戶輸入的內容含有單引號時,組拼出來的SQL語句就會存在語法錯誤。要解決這個問題需要對單引號進行轉義,也就是把單引號轉換成兩個單引號。有些時候用戶往往還會輸入像「 & 」這些特殊SQL符號,為保證組拼好的SQL語句語法正確,必須對SQL語句中的這些特殊SQL符號都進行轉義,顯然,對每條SQL語句都做這樣的處理工作是比較煩瑣的。 SQLiteDatabase類提供了一個重載後的execSQL(String sql, Object[] bindArgs)方法,使用這個方法可以解決前面提到的問題,因為這個方法支持使用佔位符參數(?)。使用例子如下:
復制代碼 代碼如下:

SQLiteDatabase db = ....;
db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"傳智播客", 4});
db.close();

execSQL(String sql, Object[] bindArgs)方法的第一個參數為SQL語句,第二個參數為SQL語句中佔位符參數的值,參數值在數組中的順序要和佔位符的位置對應。
SQLiteDatabase的rawQuery()用於執行select語句,使用例子如下:
復制代碼 代碼如下:

SQLiteDatabase db = ....;
Cursor cursor = db.rawQuery("select * from person", null);
while (cursor.moveToNext()) {
int personid = cursor.getInt(0); //獲取第一列的值,第一列的索引從0開始
String name = cursor.getString(1);//獲取第二列的值
int age = cursor.getInt(2);//獲取第三列的值
}
cursor.close();
db.close();

rawQuery()方法的第一個參數為select語句;第二個參數為select語句中佔位符參數的值,如果select語句沒有使用佔位符,該參數可以設置為null。帶佔位符參數的select語句使用例子如下:
復制代碼 代碼如下:

Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"%林計欽%", "4"});

Cursor是結果集游標,用於對結果集進行隨機訪問,如果大家熟悉jdbc, 其實Cursor與JDBC中的ResultSet作用很相似。使用moveToNext()方法可以將游標從當前行移動到下一行,如果已經移過了結果集的最後一行,返回結果為false,否則為true。另外Cursor 還有常用的moveToPrevious()方法(用於將游標從當前行移動到上一行,如果已經移過了結果集的第一行,返回值為false,否則為true )、moveToFirst()方法(用於將游標移動到結果集的第一行,如果結果集為空,返回值為false,否則為true )和moveToLast()方法(用於將游標移動到結果集的最後一行,如果結果集為空,返回值為false,否則為true ) 。

除了前面給大家介紹的execSQL()和rawQuery()方法, SQLiteDatabase還專門提供了對應於添加、刪除、更新、查詢的操作方法: insert()、delete()、update()和query() 。這些方法實際上是給那些不太了解SQL語法的菜鳥使用的,對於熟悉SQL語法的程序員而言,直接使用execSQL()和rawQuery()方法執行SQL語句就能完成數據的添加、刪除、更新、查詢操作。

㈥ 如何實現數據列表的增刪改

這個簡單,就是寫幾個jsp頁面:
1、一個jsp查詢資料庫表(網上查查怎麼用JDBC),生成的html列出來數據表內容,每行的後面加一個「刪除」,一個「修改」,分別鏈接到負責刪除和修改的jsp,參數是ID欄位的值,比如delete.jsp?id=223,modify.jsp?id=223這樣
頁面下面加個按鈕,指向新增頁面add.jsp
2、delete.jsp,根據參數,拼出來刪除的sql語句,執行,類似delete from yourtable where id=223
3、modify.jsp,針對資料庫表的各個欄位,生成一個html form,每個欄位對應一個input,根據參數,查詢出數據表當前值,放在表單各Input中,表單提交到modifysubmit.jsp,後者中生成update sql,完成修改
4、add.jsp,跟modify差不多,就是沒有填現有值的步驟,也是分兩步,一步生成表單讓用戶填,一步提交到資料庫。

㈦ 如何用jmeter實現mysql資料庫增刪改查

  1. 在線程組中添加JDBC Connection Configuration

    a.variable Name 中填寫的JDBC Request需要引用的值(例如:test)

    b.Database URL 中填寫jdbc:mysql://資料庫的地址:埠號/資料庫名稱

    c.JDBC Driver class中填寫:org.gjt.mm.mysql.Driver

    d.Username中填寫資料庫的用戶名

    e.Password中填寫資料庫的密碼

  2. 在測試計劃中導入sql所需要的jar包"mysql-connector-java-5.1.20.jar"

  3. 添加JDBC Request

    a.在variable Name中填入上面說的"test"

    b.在Query中填寫你所需要操作的sql語句

  4. 添加查看結果數後運行查看你操作的介面

㈧ 修改Oracle或SQLServer2000資料庫連接數 對數據的增刪改查有什麼關系速度上有沒有影響

修改Oracle或SQLServer2000資料庫連接數只是限制了連接到資料庫的客戶端數量,只要連接數量不是特別多,基本是不會對速度有所影響的。修改之前最好先測試一下。

㈨ 軟體測試SQL面試題

資料庫,無外乎增刪改查:

增:

insert into A表 values (value1,value2,value3......)向A表中新增數據

刪:

delete from A表 ( where id=1) 刪除A表(刪除A表id=1的數據)如果刪除某個測試數據,記得加where條件,否則整張表的數據都被刪除,防止誤操作!不過,數據可以回滾找回。

truncate A表:清除表數據,數據無法回滾。

drop A表:整表結構刪除,即,這張表不存在了。

改:

update A表 set name='test' where id=1 修改id為1的name值為test

查:

1:左關聯和右關聯的區別?

答:左關聯( left join )左表為主,左表數據全部顯示,右表顯示關聯數據,無關聯顯示null,右關聯( right join )相反。

2:模糊查詢?

select * from A表 where name like ' %a% ' (name包含a字母)

查詢結果: a , a bc,b a c,bc a

select * from A表 where name like ' a% ' (name值以a字母開頭)

查詢結果: a , a bc

select * from A表 where name like ' %a ' (name值以a字母結尾)

查詢結果: a ,bc a

3:統計:count和sum

count統計表的 記錄數 ,sum統計某列數值 總和 。

select count(*) from A表

select count(1) from A表

select count(列名) from A表

區別:

count( * ): 所有記錄,包括null值

count( 1 ):所有記錄,包括null值

count( 列名 ):列名有值得記錄, 不包括null值

執行效率:

以前是count(1)比count(*)快,但現在count(*)底層演算法優化,查詢更快,所以推薦count(*)

統計有效數據的記錄,count(列名)

select sum(列名) from A表 計算列名數值總和。

舉例:

查詢A表中,姓王的用戶量

select count(*) from A where name like '王%'

Plus版

1:去重distinct,查詢不重復記錄的數據

必須放開頭

select distinct 列名 from 表名(查詢所有列名數據,去掉重復數據)

舉例:

表A,查詢考核等級grade,有哪些值

select distinct grade from A

2:分組group by,根據某個欄位分組

select 列名 from 表名 group by 列名,一般會配合聚合函數一起使用

舉例:

表A中,查詢考核等級grade欄位,不同值各多少人

select grade,count(*) from A group by grade

3:limit,查詢結果返回的數量,多用於分頁查詢

select * from 表名 limit i,n i代表查詢結果的索引值,默認從0開始,n返回查詢的結果數。

舉例:

訂單表A,查詢第21條到30條數據

select * from A limit 20,10

可能會問為什麼不能直接用id查詢?因為id不準確,可能存在id不連續的情況。如果某條數據被物理刪除了呢?

何為物理刪除和邏輯刪除?

物理 刪除 ,直接將某條數據,從表中刪除。

邏輯 刪除,僅通過某個欄位標記刪除,實際表中還存在。(比如:is_delete=1代表已刪除,is_delete=0未刪除)

4:排序order by 列名 asc(列名值升序排列)和order by 列名 desc(列名值降序排列)

舉例:

用戶表A,按照用戶id升序(select查詢默認根據主鍵升序,所以升序,不加order by也可以)

select * from A order by id asc同select *from A

用戶表A,按照新建時間倒序

select * from A order by create_time desc

5:in和between查詢某個范圍的數值

舉例:

in:查詢指定數值的數據

between:查詢某個范圍內的數據

舉例:

查詢表A中,id=1和id=10的數據

select * from A where id in(1,10)

查詢表A中,1月份新增的數據

select * from A where create_time between '2022-01-01' and '2022-01-31 23:59:59'

已知有如下4張表:

學生表:student(學號,學生姓名,出生年月,性別)

成績表:score(學號,課程號,成績)

課程表:course(課程號,課程名稱,教師號)

教師表:teacher(教師號,教師姓名)

准備練習數據

1)創建學生表(student)

2)創建成績表(score)

3)創建課程表(course)

4)教師表(teacher)

1)學生表添加數據

2)成績表添加數據

3)課程表添加數據

4)教師表添加數據

簡單查詢

查詢姓「猴」的學生名單

查詢姓名中最後一個字是「猴」字的學生名單

查詢姓名中帶「猴」字的學生名單

查詢姓「孟」老師的個數

匯總分析

1.匯總分析

查詢課程編號為「0002」的總成績

查詢選了課程的學生人數

2.分組

查詢各科成績的最高分和最低分, 以如下的形式顯示:課程號,最高分,最低分

查詢每門課程選修的學生數

3.分組結果的條件

查詢至少選修兩門課程的學生學號

查詢同名同姓學生名單並統計同名人數

分析:條件:怎麼算姓名相同?按姓名分組後人數大於等於2,因為同名的人數大於等於2,分析出這一點很重要

查詢不及格的課程並按課程號從大到小排列

查詢每門課程的平均成績,結果按平均成績升序排序,平均成績相同時,按課程號降序排列

檢索課程編號為「0004」且分數小於60的學生學號,結果按按分數降序排列

統計每門課程的學生選修人數(超過2人的課程才統計),要求輸出課程號和選修人數,查詢結果按人數降序排序,若人數相同,按課程號升序排序

查詢兩門以上不及格課程的同學的學號及其平均成績

第2步:再加上限制條件:

1)不及格課程

2)兩門以上[不及格課程]

4.查詢結構排序,分組的指定條件

查詢學生的總成績並進行排名

查詢平均成績大於60分的學生的學號和平均成績

復雜查詢

查詢課程成績小於60分學生的學號、姓名

【知識點】子查詢

1.翻譯成大白話

1)查詢結果:學生學號,姓名

2)查詢條件:所有課程成績 < 60 的學生,需要從成績表裡查找,用到子查詢

第1步,寫子查詢(所有課程成績 < 60 的學生)

第2步,查詢結果:學生學號,姓名,條件是前面1步查到的學號

查詢沒有學全所有課的學生的學號、姓名

查詢出只選修了兩門課程的全部學生的學號和姓名

查找1990年出生的學生名單

查詢本月過生日的學生

工作中會經常遇到這樣的業務問題:

如何找到每個類別下用戶最喜歡的產品是哪個?

如果找到每個類別下用戶點擊最多的5個商品是什麼?

這類問題其實就是常見的:分組取每組最大值、最小值,每組最大的N條(top N)記錄。

分組取每組最大值,按課程號分組取成績最大值所在行的數據

分組取每組最小值,按課程號分組取成績最小值所在行的數據

每組最大的N條記錄,查詢各科成績前兩名的記錄

第1步,查出有哪些組

我們可以按課程號分組,查詢出有哪些組,對應這個問題里就是有哪些課程號

第2步:先使用order by子句按成績降序排序(desc),然後使用limt子句返回topN(對應這個問題返回的成績前兩名)

第3步,使用union all 將每組選出的數據合並到一起

多表查詢

查詢所有學生的學號、姓名、選課數、總成績

查詢平均成績大於85的所有學生的學號、姓名和平均成績

查詢學生的選課情況:學號,姓名,課程號,課程名稱

㈩ 資料庫,增刪改查排序,分組,聚合,查前100行語句。 這個問題應該怎麼回答呢

單表操作的主要使用語句為SELECT語句,在SELECT語句中,可以根據自己對數據的需求,使用不同的查詢條件。
資料庫(Database),簡而言之可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作。
所謂「資料庫」系以一定方式儲存在一起、能予多個用戶共享、具有盡可能小的冗餘度、與應用程序彼此獨立的數據集合。一個資料庫由多個表空間(Tablespace)構成。