1.添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.添加mysql库
implementation("mysql:mysql-connector-java:5.1.47")
3.添加DBHelper类
import java.sql.Connection
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.SQLException
class DBHelper {
companion object{
val driver: String = "com.mysql.jdbc.Driver";
val url: String = "jdbc:mysql://XXX(IP):3306/(数据库名库)";
val user: String = "用户名";
val password:String = "密码";
fun getConn(): Connection?{
var conn: Connection? =null;
Class.forName(driver);
try {
conn = DriverManager.getConnection(url, user, password) as Connection?;
}
catch (e: SQLException){
e.printStackTrace()
}
return conn
}
fun ExecuteQuerySQL(strSQL: String):ArrayList<ArrayList<String>>? {
var conn:Connection? = null
var resultSetList :ArrayList<ArrayList<String>> = ArrayList<ArrayList<String>>();
conn = DBHelper.getConn()
if (conn == null) {
//System.out.println("输出为null");
return null;
}
try {
var st = conn.createStatement()
var rsForResult: ResultSet = st.executeQuery(strSQL)
while(rsForResult.next())
{
var rsRecord:ArrayList<String> = ArrayList<String>();
var icount:Int = rsForResult.getMetaData().getColumnCount();
for(i in 1 .. icount)
rsRecord.add(rsForResult.getString(i));
resultSetList.add(rsRecord);
}
st.close();
conn.close();
return resultSetList;
} catch (e:SQLException ) {
e.printStackTrace();
}
return null;
}
fun ExecuteNoQuerySQL(strSQL: String): Boolean {
var conn:Connection? = null
conn = DBHelper.getConn()
if (conn == null) {
//System.out.println("输出为null");
return false;
}
try {
var st = conn.createStatement()
var rsForResult: ResultSet = st.executeQuery(strSQL)
st.close();
conn.close();
return true;
} catch (e:SQLException ) {
e.printStackTrace();
}
return false;
}
}
}
4.添加ViewModel类
class MySqlViewModel: ViewModel() {
var userName = mutableStateOf("")
var iCount = 5
fun getUserName(id: Int): String? {
var sql: String = "select userName from userT where id = "+id
var rsList = DBHelper.ExecuteQuerySQL(sql)
if (rsList != null) {
if(rsList.size>0)
return rsList.get(0).get(0)
else
return ""
}else
return null
}
fun OnClick2(){
GlobalScope.launch {
var strName:String?=null
strName = getUserName(iCount)
userName.value = strName?:""
iCount++
if(iCount>10)
iCount=5
}
}
}
5.compose界面
@Composable
fun Greeting(viewModel: MySqlViewModel, modifier: Modifier = Modifier) {
Column {
Text(
text = "Hello ${viewModel.userName.value}!",
modifier = modifier
)
Button(onClick = {
viewModel.OnClick2()
}) {
Text(text = "click")
}
}
}
viewModel的获取。
var mySqlViewModel = ViewModelProvider(this).get(MySqlViewModel::class.java)