第四周星期五每日总结
今日进行Android Studio连接Mysql的操作。连接之前首先确定Mysql要用5版本的驱动,8版本数据库也可以使用5版本驱动连接,不然连接不上。
其次不能用localhost进行连接,需使用自己的IP地址连接,(查看IP地址简单方法:一般来说都是连接WiFi所在的ip地址,只需要右键所连接wifi,属性然后ipv4地址即为自己的ip地址。
此外,Android Studio连接mysql必须在子线程进行。
连接代码(每日打卡App将打卡内容存进mysql):
1 package com.example.null001; 2 3 import android.app.Activity; 4 import android.app.DatePickerDialog; 5 import android.app.TimePickerDialog; 6 import android.content.ContentValues; 7 import android.content.Intent; 8 import android.content.SharedPreferences; 9 import android.database.Cursor; 10 import android.database.sqlite.SQLiteDatabase; 11 import android.os.Bundle; 12 import android.util.Log; 13 import android.view.View; 14 import android.widget.Button; 15 import android.widget.DatePicker; 16 import android.widget.EditText; 17 import android.widget.TextView; 18 import android.widget.TimePicker; 19 import android.widget.Toast; 20 21 import androidx.appcompat.app.AppCompatActivity; 22 23 import java.sql.Connection; 24 import java.sql.DriverManager; 25 import java.sql.PreparedStatement; 26 import java.sql.SQLException; 27 import java.text.DateFormat; 28 import java.util.Calendar; 29 import java.util.Locale; 30 import com.example.null001.Sql_sever; 31 import com.mysql.cj.xdevapi.Statement; 32 33 public class index extends AppCompatActivity implements View.OnClickListener { 34 35 EditText biao, zheng; 36 Button btnlogin; 37 DateFormat format = DateFormat.getDateTimeInstance(); 38 Calendar calendar = Calendar.getInstance(Locale.CHINA); 39 private TextView txtDate; 40 private TextView txtTime; 41 private Button btnDate; 42 private Button btnTime; 43 private String url="jdbc:mysql://192.168.81.51:3306/my_db?useUnicode=true&characterEncoding=utf-8&useSSL=false"; 44 private String user="root"; 45 private String password="352204"; 46 PreparedStatement statement=null; 47 Statement stat=null; 48 Connection conn=null; 49 50 Mysql mysql; 51 SQLiteDatabase db; 52 SharedPreferences sp; 53 54 /** 55 * 日期选择 56 * 57 * @param activity 58 * @param themeResId 59 * @param tv 60 * @param calendar 61 */ 62 63 public static void showDatePickerDialog(Activity activity, int themeResId, final TextView tv, Calendar calendar) { 64 // 直接创建一个DatePickerDialog对话框实例,并将它显示出来 65 new DatePickerDialog(activity, themeResId, new DatePickerDialog.OnDateSetListener() { 66 // 绑定监听器(How the parent is notified that the date is set.) 67 @Override 68 public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 69 // 此处得到选择的时间,可以进行你想要的操作 70 tv.setText("您选择了:" + year + "年" + (monthOfYear + 1) + "月" + dayOfMonth + "日"); 71 } 72 } 73 // 设置初始日期 74 , calendar.get(Calendar.YEAR) 75 , calendar.get(Calendar.MONTH) 76 , calendar.get(Calendar.DAY_OF_MONTH)).show(); 77 } 78 79 /** 80 * 时间选择 81 * 82 * @param activity 83 * @param themeResId 84 * @param tv 85 * @param calendar 86 */ 87 public static void showTimePickerDialog(Activity activity, int themeResId, final TextView tv, Calendar calendar) { 88 // Calendar c = Calendar.getInstance(); 89 // 创建一个TimePickerDialog实例,并把它显示出来 90 // 解释一哈,Activity是context的子类 91 new TimePickerDialog(activity, themeResId, 92 // 绑定监听器 93 new TimePickerDialog.OnTimeSetListener() { 94 @Override 95 public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 96 tv.setText("您选择了:" + hourOfDay + "时" + minute + "分"); 97 } 98 } 99 // 设置初始时间 100 , calendar.get(Calendar.HOUR_OF_DAY) 101 , calendar.get(Calendar.MINUTE) 102 // true表示采用24小时制 103 , true).show(); 104 } 105 106 107 @Override 108 protected void onCreate(Bundle savedInstanceState) { 109 super.onCreate(savedInstanceState); 110 setContentView(R.layout.activity_index); 111 btnDate = (Button) findViewById(R.id.btn_Date); 112 btnTime = (Button) findViewById(R.id.btn_Time); 113 txtDate = (TextView) findViewById(R.id.txtDate); 114 txtTime = (TextView) findViewById(R.id.txtTime); 115 btnDate.setOnClickListener(this); 116 btnTime.setOnClickListener(this); 117 biao = this.findViewById(R.id.biao); //用户名输入框 118 zheng = this.findViewById(R.id.zheng); //密码输入框 119 btnlogin = this.findViewById(R.id.submit); 120 mysql = new Mysql(this,"wm",null,1); //建数据库 121 db = mysql.getReadableDatabase(); 122 sp = this.getSharedPreferences("useinfo",this.MODE_PRIVATE);//登录按钮 123 124 125 btnlogin.setOnClickListener(new View.OnClickListener() { 126 public void onClick(View v) { 127 String d = txtDate.getText().toString(); 128 String t = txtTime.getText().toString(); 129 String b = biao.getText().toString(); //用户名 130 String z = zheng.getText().toString(); 131 //密码 132 new Thread(new Runnable() { 133 @Override 134 public void run() { 135 PreparedStatement preparedStatement = null; 136 try { 137 Class.forName("com.mysql.cj.jdbc.Driver"); 138 java.sql.Connection cn= DriverManager.getConnection("jdbc:mysql://192.168.65.99/my_db","root","352204"); 139 String sql = "insert into wm(data,time,biao,nei) values (?,?,?,?)"; 140 preparedStatement = conn.prepareStatement(sql); 141 preparedStatement.setString(1, d); 142 preparedStatement.setString(2, t); 143 preparedStatement.setString(3, b); 144 preparedStatement.setString(4, z); 145 preparedStatement.executeUpdate(); 146 System.out.println("连接数据库成功"); 147 } catch (ClassNotFoundException e) { 148 System.out.println("连接数据库失败"); 149 e.printStackTrace(); 150 } catch (SQLException e) { 151 e.printStackTrace(); 152 } 153 } 154 }).start(); 155 if(d.equals("")||t.equals("")||b.equals("")||z .equals("")){ 156 Toast.makeText(index.this, "输入不能为空!!", Toast.LENGTH_LONG).show(); 157 } 158 else { 159 160 Cursor cursor = db.query("wm", new String[]{"data"}, null, null, null, null, null); 161 ContentValues cv = new ContentValues(); 162 cv.put("data", d); 163 cv.put("time", t); 164 cv.put("biao", b); 165 cv.put("nei", z); 166 db.insert("wm", null, cv); 167 SharedPreferences.Editor editor = sp.edit(); 168 editor.putString("data", d); 169 editor.putString("time", t); 170 editor.putString("biao", b); 171 editor.putString("nei", z); 172 editor.commit(); 173 Intent intent = new Intent(); 174 intent.setClass(index.this, Welcome.class); //跳转到登录页面 175 startActivity(intent); 176 Toast.makeText(index.this, "发布成功!", Toast.LENGTH_LONG).show(); 177 } 178 } 179 }); 180 } 181 182 @Override 183 public void onClick(View view) { 184 switch (view.getId()) { 185 case R.id.btn_Date: 186 showDatePickerDialog(this, 4, txtDate, calendar); 187 ; 188 break; 189 case R.id.btn_Time: 190 showTimePickerDialog(this, 4, txtTime, calendar); 191 break; 192 default: 193 break; 194 } 195 } 196 }
浙公网安备 33010602011771号