Heim > Java > JavaBase > Hauptteil

Java-Programmentwicklung, Lernen von JDBC- und MySQL-Datenbanken

coldplay.xixi
Freigeben: 2021-02-11 10:33:23
nach vorne
3494 Leute haben es durchsucht

Java-Programmentwicklung, Lernen von JDBC- und MySQL-Datenbanken

Verwandte Lernempfehlungen: Java-Grundlagen

1. Der Betrieb der JDBC-Verbindung zur Datenbank

kann in einer Klasse gekapselt werden, um den Code beim Schreiben zu vereinfachen. 1, die spezifischen Schritte des Abfragevorgangs

(1) Senden Sie eine SQL-Anweisung an die Datenbank:

try {
    Class.forName("com.mysql.cj.jdbc.Driver");}catch (Exception e){ }
Nach dem Login kopieren
Deklarieren Sie zuerst das SQL-Anweisungsobjekt und lassen Sie dann das erstellte Verbindungsobjekt die Methode createStatement()aufrufen > um das SQL-Anweisungsobjekt zu erstellen.

(2) Abfrageergebnisse verarbeiten

Mit dem SQL-Anweisungsobjekt kann dieses Objekt entsprechende Methoden aufrufen, um verschiedene Operationen an den Tabellen in der Datenbank zu implementieren, wobei die Abfrageergebnisse in einem von der ResultSet-Klasse deklarierten Objekt gespeichert werden. Das heißt, die SQL-Abfrageanweisung gibt ein ResultSet-Objekt an die Datenbankabfrageoperation zurück. Das ResultSet besteht aus Datenzeilen, die nach „Spalten“ (Feldern) organisiert sind.

Connection con = null;//声明要连接数据库的对象comString uri = "jdbc:mysql://localhost:3306/数据库名?useSSL=true &characterEncoding=utf-8";	//连接地址String user = "root";	//连接数据库的用户名String password = "123456";	//连接数据库的密码try {
    con = DriverManager.getConnection(uri,user,password);
	//连接代码}catch(SQLException e){ }
Nach dem Login kopieren
Das ResultSet-Objekt kann jeweils nur eine Datenzeile sehen. Verwenden Sie die Methode next(), um zur nächsten Zeile zu wechseln. ResultSet-Objekte können Spaltenwerte über getXxx(int ​​​​columnIndex) und Spaltenwerte durch Übergeben von Spaltennamen getXxx(String columnsName) erhalten. (3) Schließen Sie die Verbindung
Statement sql;try{
    sql = con.createStatement();}catch (SQLException e){ }
Nach dem Login kopieren

Hinweis: Die Datenbank ist eng an das Verbindungsobjekt gebunden und sollte nach der Verwendung geschlossen werden.
2, steuern Sie den Cursor

Die Anfangsposition des Cursors in der Ergebnismenge befindet sich vor der ersten Zeile der Ergebnismenge. Die Ergebnismenge ruft die Methode next() auf, um den Cursor nach unten (zurück) zu bewegen. True wird zurückgegeben, wenn die Bewegung erfolgreich ist, false wird zurückgegeben, wenn die Bewegung fehlschlägt. createStatement()创建这个SQL语句对象。
(2)处理查询结果
有了SQL语句对象后,这个对象可以调用相应的方法实现对数据库中表的各项操作,其中查询结果存放在一个ResultSet类声明的对象中。即SQL查询语句对数据库的查询操作讲放回一个ResultSet对象,ResultSet由“列”(字段)组织的数据行构成。

rs = sql.executeQuery("select * from 表的名称");//读取表中的所有列,*为通配符rs = sql.executeQuery("select 行1字段名,行2字段名... from 表的名称");//读取表中特定的列
Nach dem Login kopieren

ResultSet对象一次只能看到一行数据,使用next()方法移到下一行。ResultSet对象可以通过getXxx(int columnIndex)获得列值和通过传递列名getXxx(String columnName)获得列值。
(3)关闭连接

con.close(); //关闭con所连接的数据库
Nach dem Login kopieren

注意:数据库与连接对象紧密绑定,应在使用完数据库再进行关闭操作。

2,控制游标
结果集的游标的初始位置在结果集第一行的前面,结果集调用next()方法向下(后)移动游标,移动成功返回true,移动失败返回false。如果要在结果集中移动并显示若干条记录,必须返回一个滚动的结果集。方法如下:

Statement stmt = con.createStatement(int type,int concurrency);//获得一个Statement对象,根据参数的值,stmt返回相应类型的结果集:ResultSet re = stmt.executeQuery(SQL语句);type的取值:决定滚动方式:
ResultSet.TYPE_FORWARD_ONLY 结果集的游标只能向下滚动
ResultSet.TYPE_SCROLL_INSENSITIVE 游标可以上下移动,数据库变化时,结果集不变
ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,数据变化时,结果集同步改变
Concurrency取值:决定是否可以用结果集更新数据库
ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表
ResultSet.CONCUR_UPDATABLE 能用结果集更新数据库中的表

滚动查询常用的ResultSet的方法:public boolean previous() 将游标向上移动,当移动到结果集第一行之前时返回falsepublic void beforeFirst() 将游标移动到结果集的初始位置,第一行之前public void afterLast() 将游标移动到结果集的最后一行之后public void first() 将游标移动到第一行public void last() 将游标移动到最后一行public boolean isAfterLast() 判断游标是否在最后一行之后public boolean isBeforeFirst() 判断游标是否在第一行游标之前public boolean isFirst() 判断游标是否指向第一行public boolean isLast() 判断游标是否指向最后一行public int getRow() 得到当前游标所指向的行号,行号从1开始,如果结果集没有行,返回0public boolean absolute(int row) 将游标移动到参数row指定的行(参数取负数即倒数)
Nach dem Login kopieren

(3)条件与排序查询
where子语句:select 字段 from 表明 where 条件

(1)字段值与固定值比较
select * from table where name='张三'(2)字段值在某个区间
select * from table where number>5 and number<10 and name!=&#39;李四&#39;(3)使用某些特殊的日期函数(Data:year-month-day)select * from table where year(表明日期的字段名)<1980 and month(表面日期的字段名)<=10select * from table where year(表明日期的字段名) between 2002 and 2021(4)使用某些特殊的时间函数(hour,minute,second)
select * from timelist where second(表明时间的字段名)=36(5)用操作符like进行模式匹配,使用%代替0个或多个字符,用一个下划线_代替一个字符。
select * from table where name like&#39;%欧%&#39; //查询name字段有“欧”字的记录
Nach dem Login kopieren

order by语句:可结合where语句使用

select * from table order by height
select * from table where name like &#39;%王%&#39; order by name
Nach dem Login kopieren

三、更新、添加和删除操作

Statement对象调用public int executeUpdate(String sqlStatement);通过参数指定的方式对数据库表中的记录的更新、添加和删除操作。

(1)更新
update 表名 set 字段 = 新值 where <条件子句>(2)添加
insert into 表 values (对应具体的记录)(3)删除
delete from 表名 where <条件子句>
Nach dem Login kopieren

四、使用预处理语句

Java提供了更高效的数据库操作机制,就是PreparedStatement对象,即预处理语句对象。将SQL语句处理为数据库底层语句,再传输给数据库。
使用通配符:对SQL进行预处理时,可以用 通配符? 来代替字段的值,只要在预处理语句执行之前再设置通配符所代表的具体值即可:

String str = "select * from 表名 where 字段1 < ? and 字段2 = ?";PreparedStatement sql = con.prepareStatement(str);sql.setXxx(int parameterIndex,Type x);//该方法设置?代表的值,parameterIndex代表第几个?,x代表要替换的值。
Nach dem Login kopieren

五、通用查询

编写通用查询类,用户可以将数据库名、SQL语句传递给该类的对象,那么该对象就用一个二维数组返回查询的记录。
编写通用查询类需要知道数据库表列(字段)的名字和数量。常用方法为用结果集ResultSet对象rs调用getMetaData()方法返回一个ResultSetMetaData对象:

ResultSetMetaData metaData = rs.getMetaData();
Nach dem Login kopieren

然后该对象metaData调用getColumnCount()方法既可以返回rs中列的数目,调用getColumnName(int i)Wenn Sie mehrere Datensätze in der Ergebnismenge verschieben und anzeigen möchten, müssen Sie eine scrollende Ergebnismenge zurückgeben

. Die Methode ist wie folgt:

con.setAutoCommit(false);
Nach dem Login kopieren
(3) Bedingung und Sortierabfrage

where-Unteranweisung: Feld auswählen aus gibt an, wo die Bedingung ist

con.commit();
Nach dem Login kopieren
Order by-Anweisung: kann in Kombination mit verwendet werden where-Anweisung

con.rollback();
Nach dem Login kopieren

drei, Aktualisierungs-, Hinzufügungs- und Löschvorgänge
Das Anweisungsobjekt ruft public intexecuteUpdate(String sqlStatement); auf, um Datensätze in der Datenbanktabelle durch Angabe von Parametern zu aktualisieren, hinzuzufügen und zu löschen.
rrreee

4. Verwenden Sie vorbereitete Anweisungen

Java bietet einen effizienteren Datenbankbetriebsmechanismus, nämlich das PreparedStatement-Objekt, also das vorbereitete Anweisungsobjekt. Verarbeiten Sie die SQL-Anweisung in die zugrunde liegende Anweisung der Datenbank und übertragen Sie sie dann an die Datenbank.
Platzhalter verwenden: Bei der Vorverarbeitung von SQL können Sie den Feldwert durch das Platzhalterzeichen ersetzen. Legen Sie einfach den spezifischen Wert fest, der durch das Platzhalterzeichen dargestellt wird:

rrreee

5. Allgemeine Abfrage Beim Schreiben Als allgemeine Abfrageklasse können Benutzer den Datenbanknamen und die SQL-Anweisung an das Objekt dieser Klasse übergeben. Anschließend verwendet das Objekt ein zweidimensionales Array, um die Abfragedatensätze zurückzugeben. Das Schreiben einer allgemeinen Abfrageklasse erfordert die Kenntnis des Namens und der Anzahl der Spalten (Felder) der Datenbanktabelle. Eine übliche Methode besteht darin, das ResultSet-Objekt rs zu verwenden, um die Methode getMetaData() aufzurufen, um ein ResultSetMetaData-Objekt zurückzugeben: rrreee Dann können die ObjektmetaData durch Aufrufen von getColumnCount( )-Methode. Der Aufruf von getColumnName(int i) kann den Namen der i-ten Spalte in der Ergebnismenge zurückgeben.

🎜 6. Transaktion 🎜🎜🎜🎜1. Transaktion und Verarbeitung 🎜🎜 Eine Transaktion besteht aus einer Reihe von SQL-Anweisungen. Bei der sogenannten Transaktionsverarbeitung sorgt das Anwendungsprogramm dafür, dass entweder alle SQL-Anweisungen der Transaktion ausgeführt werden oder keine davon. Die Transaktionsverarbeitung ist ein wichtiger Mechanismus, um die Integrität und Konsistenz der Daten in der Datenbank sicherzustellen. 🎜🎜🎜2, JDBC-Transaktionsverarbeitung🎜🎜 Verwenden Sie die Methode setAutoCommit(boolean b), um den automatischen Modus zu deaktivieren: 🎜 Das bedeutet, dass die sofortige Gültigkeit der SQL-Anweisung deaktiviert werden soll Datenbank, bis beide ausgeführt werden. Die Methode besteht darin, das Verbindungsobjekt diese Methode aufrufen zu lassen, bevor das SQL-Objekt abgerufen wird: 🎜rrreee🎜Verwenden Sie die commit()-Methode, um die Transaktion zu verarbeiten: 🎜 Lassen Sie das SQL-Objekt nach dem Ausschalten des automatischen Modus mehrere SQL-Anweisungen (d. h. dasselbe) übermitteln Diese Anweisungen werden nicht sofort wirksam, aber erst dann wirksam, wenn das Verbindungsobjekt die Methode aufruft: 🎜rrreee🎜 Fehler bei der Verwendung der rollback()-Methode zur Verarbeitung der Transaktion: 🎜 Das heißt, das Vorgang, der von der Transaktion ausgeführt wird. Wenn con die commit()-Methode zur Transaktionsverarbeitung aufruft, schlägt die Transaktionsausführung fehl und es wird eine SQLException ausgelöst, solange eine SQL-Anweisung nicht erfolgreich ausgeführt wird. Zu diesem Zeitpunkt muss con die Methode rollback() aufrufen, um alle Vorgänge rückgängig zu machen, die Datenänderungen verursachen: 🎜rrreee🎜🎜🎜Verwandte kostenlose Lernempfehlungen: 🎜🎜🎜MySQL-Video-Tutorial🎜🎜🎜🎜

Das obige ist der detaillierte Inhalt vonJava-Programmentwicklung, Lernen von JDBC- und MySQL-Datenbanken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage