第四周星期五每日总结

     今日进行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 }

 

posted on 2023-03-10 22:23  樱华旧梦  阅读(19)  评论(0)    收藏  举报