JAVA 正常网页 *** 作插入mysql数据库中文不乱码,通过手机push上手机系统文件中文全部乱码。

JAVA 正常网页 *** 作插入mysql数据库中文不乱码,通过手机push上手机系统文件中文全部乱码。,第1张

1 mysql字符集基础知识:

MySQL 51的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。我们最终的目标是使得这四个层次转化会支持中文的编码,本例中统一使用 utf8 编码。

2设置默认的utf8 编码格式

在终端输入 sudo gedit /etc/mysq/mycnf 输入管理员密码后就能打开mycnf文件,在mycnf文件的[mysql]下面加上 default-character-set=utf8,然后在终端输入 sudo /etc/initd/mysql restart 重启mysql。这样设置的默认编码就生效了。

3创建数据库

在终端输入 mysql -u[username] -p[pwd] 后进入”mysql>“提示符,输入 create database [数据库名] default character set utf8 ;这样就建立了一个utf8编码的数据库了。

然后输入 user [数据库名] 进入该数据库。

用这个类吧好的话,给我加加分

import javasql;

/

@功能: 一个JDBC的本地化API连接类,封装了数据 *** 作方法,只用传一个SQL语句即可

@作者: 李开欢

@日期: 2007/

/

public class ConnectionDemo {

/

这里可以将常量全部放入另一个类中,以方便修改

/

private static Connection conn;

private static Statement ps;

private static ResultSet rs;

private static final String DRIVER = "commicrosoftjdbcsqlserverSQLServerDriver";

private static final String URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";

private static final String USER ="sa";

private static final String PASS = "sa";

public ConnectionDemo() {

// TODO Auto-generated constructor stub

ConnectionDemogetConnection();

}

public static Connection getConnection(){

Systemoutprintln("连接中");

try {

ClassforName(ConnectionDemoDRIVER);

conn = DriverManagergetConnection(ConnectionDemoURL, ConnectionDemoUSER, ConnectionDemoPASS);

Systemoutprintln("成功连接");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

return conn;

}

public static Statement getStatement(String sql){

Systemoutprintln("执行SQL语句中");

try {

ps = conncreateStatement(ResultSetTYPE_SCROLL_SENSITIVE, ResultSetCONCUR_UPDATABLE);

if(sqlsubstring(0, 6)equals("select")){

rs = psexecuteQuery(sql);

Systemoutprintln("执行完查询 *** 作,结果已返回ResultSet集合");

}else if(sqlsubstring(0, 6)equals("delete")){

psexecuteUpdate(sql);

Systemoutprintln("已执行完毕删除 *** 作");

}else if(sqlsubstring(0, 6)equals("insert")){

psexecuteUpdate(sql);

Systemoutprintln("已执行完毕增加 *** 作");

}else{

psexecuteUpdate(sql);

Systemoutprintln("已执行完毕更新 *** 作");

}

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

return ps;

}

public static ResultSet getResultSet(){

Systemoutprintln("查询结果为:");

return rs;

}

public static void closeConnection(){

Systemoutprintln("关闭连接中");

try {

if (rs != null) {

rsclose();

Systemoutprintln("已关闭ResultSet");

}

if (ps != null) {

psclose();

Systemoutprintln("已关闭Statement");

}

if (conn != null) {

connclose();

Systemoutprintln("已关闭Connection");

}

} catch (Exception e) {

// TODO: handle exception

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

ConnectionDemogetConnection();

String sql = "delete from type where id = 1";

ConnectionDemogetStatement(sql);

String sql2 = "insert into type values(1,'教学设备')";

ConnectionDemogetStatement(sql2);

String sql1 = "select from type";

ConnectionDemogetStatement(sql1);

ResultSet rs = ConnectionDemogetResultSet();

Systemoutprintln("编号 "+"类 型");

try {

while(rsnext()){

Systemoutprint(" "+rsgetInt(1)+" ");

Systemoutprintln(rsgetString(2));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

ConnectionDemocloseConnection();

}

}

Android 连接数据库

Android采用关系型数据库SQLite3,它是一个支持SQL轻量级的嵌入式数据库,在嵌入式 *** 作上有很广泛的,WM采用的也是SQLite3

关于过于、原理方面的东西在这篇文章里不会提到,但是如果你想能够快速的学会 *** 作SQLite3,那这就是你要找的文章!

首先,我们看一下api,所有数据库相关的接口、类都在database和androiddatabasesqlite两个包下,虽然只有两个包,但是如果你英文不好或是太懒的话也要迷茫一段时间,其实,我们真正用的到的没有几个!

1、SQLiteOpenHelper (androiddatabasesqliteSQLiteOpenHelper)

这是一个抽象类,关于抽象类我们都知道,如果要使用它,一定是继承它!

这个类的方法很少,有一个构造方法

SQLiteOpenHelper(androidcontentContext context, javalangString name,androiddatabasesqliteSQLiteDatabaseCursorFactory factory, int version);

参数不做过多的解释,CursorFactory一般直接传null就可以

public void onCreate(SQLiteDatabase db)

此方法在创建数据库是被调用,所以,应该把创建表的 *** 作放到这个方法里面,一会儿在后面我们会再详细的说如何创建表

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

从方法名上我们就能知道这个方法是执行更新的,没错,当version改变是系统会调用这个方法,所以在这个方法里应该执行删除现有表,然后手动调用onCreate的 *** 作

SQLiteDatabase getReadableDatabase()

可读的SQLiteDatabase对象

SQLiteDatabase getWritableDatabase()

获取可写的SQLiteDatabase对象

2、SQLiteDatabase(androiddatabasesqliteSQLiteDatabase)

关于 *** 作数据库的工作(增、删、查、改)都在这个类里

execSQL(sql)

执行SQL语句,用这个方法+SQL语句可以非常方便的执行增、删、查、改

除此之外,Android还提供了功过方法实现增、删、查、改

long insert(TABLE_NAME, null, contentValues)添加记录

int delete(TABLE_NAME, where, whereValue)删除记录

int update(TABLE_NAME, contentValues, where, whereValue) 更新记录

Cursor query(TABLE_NAME, null, null, null, null, null, null) 查询记录

除此之外,还有很多方法,如:beginTransaction()开始事务、endTransaction()结束事务有兴趣的可以自己看api,这里就不多赘述了

3、Cursor(androiddatabaseCursor)

游标(接口),这个很熟悉了吧,Cursor里的方法非常多,常用的有:

boolean moveToPosition(position)将指针移动到某记录

getColumnIndex(ContactsPeopleNAME)按列名获取id

int getCount()获取记录总数

boolean requery()重新查询

boolean isAfterLast()指针是否在末尾

boolean isBeforeFirst()时候是开始位置

boolean isFirst()是否是第一条记录

boolean isLast()是否是最后一条记录

boolean moveToFirst()、 boolean moveToLast()、 boolean moveToNext()同moveToPosition(position)

4、SimpleCursorAdapter(androidwidgetSimpleCursorAdapter)

也许你会奇怪了,之前我还说过关于数据库的 *** 作都在database和databasesqlite包下,为什么把一个Adapter放到这里,如果你用过Android的SQLite3,你一定会知道

,这是因为我们对数据库的 *** 作会经常跟列表联系起来

经常有朋友会在这出错,但其实也很简单

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

this,

Rlayoutlist,

myCursor,

new String[] {DBTEXT1,DB TEXT2},

new int[]{ Ridlist1,RidlistText2 });

mysetAdapter(adapter);

一共5个参数,具体如下:

参数1:Content

参数2:布局

参数3:Cursor游标对象

参数4:显示的字段,传入String[]

参数5:显示字段使用的组件,传入int[],该数组中是TextView组件的id

到这里,关于数据库的 *** 作就结束了,但是到目前为止我只做了翻译的工作,有些同学可能还是没有掌握,放心,下面我们一起顺着正常开发的思路理清一下头绪!

前面的只是帮没做过的朋友做下普及,下面才是你真正需要的!

一、写一个类继承SQLiteOpenHelpe

public class DatabaseHelper extends SQLiteOpenHelper

构造方法:

DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

在onCreate方法里写建表的 *** 作

public void onCreate(SQLiteDatabase db) {

String sql = "CREATE TABLE tb_test (_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT,class_jb TEXT NOT NULL,class_ysbj TEXT NOT NULL,title TEXT NOT NULL,content_ysbj TEXT NOT NULL)";

dbexecSQL(sql);//需要异常捕获

}

在onUpgrade方法里删除现有表,然后手动调用onCtreate创建表

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

String sql = "drop table "+tbname;

dbexecSQL(sql);

onCreate(db);

}

对表增、删、查、改的方法,这里用的是SQLiteOpenHelper提供的方法,也可以用sql语句实现,都是一样的

关于获取可读/可写SQLiteDatabase,我不说大家也应该会想到,只有查找才会用到可读的SQLiteDatabase

/

添加数据

/

public long insert(String tname, int tage, String ttel){

SQLiteDatabase db= getWritableDatabase();//获取可写SQLiteDatabase对象

//ContentValues类似map,存入的是键值对

ContentValues contentValues = new ContentValues();

contentValuesput("tname", tname);

contentValuesput("tage", tage);

contentValuesput("ttel", ttel);

return dbinsert(tbname, null, contentValues);

}

/

删除记录

@param _id

/

public void delete(String _id){

SQLiteDatabase db= getWritableDatabase();

dbdelete(tbname,

"_id=",

new String[]{_id});

}

/

更新记录的,跟插入的很像

/

public void update(String _id,String tname, int tage, String ttel){

SQLiteDatabase db= getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValuesput("tname", tname);

contentValuesput("tage", tage);

contentValuesput("ttel", ttel);

dbupdate(tbname, contentValues,

"_id=",

new String[]{_id});

}

/

查询所有数据

@return Cursor

/

public Cursor select(){

SQLiteDatabase db = getReadableDatabase();

return dbquery(

tbname,

new String[]{"_id","tname","tage","ttel","taddr"},

null,

null, null, null, "_id desc");

}

<php

//数据导入表(表字段类型要符合)

mysql_query("load data infile '文件路径' into table 表名");

//获取号码

$tel = $_POST['tel'];

//查询姓名

$sql = "select from 表名 where tel='$tel'";

$rec = mysql_query($sql);

$i=0;

while($row = mysql_fetch_array($rec)){

$array[$i]['name'] = $row['name'];

$i++;

}

//输出数组

print_r($array);

>

在搜索框中输入” services,msc”,然后输入确认键和f在MySQL服务中,双击以打开属性对话框,通过单击”开始”,”停止”来更改服务状态。

第二种:

输入\ cmd”在搜索栏中,右键单击命令提示符选项,选择以管理员身份运行,然后在命令提示符界面” MySQL80 \”中输入” net start”。可以启动MySQL服务。输入” net stop?Mysql80″以停止MySQL服务。

关于第二种方法的一些技巧:

1服务器名称无效可能的解决方案:

此处输入的” MySQL80″是服务器名称。我们在配置MySQL时设置的服务。我们可以在上图中找到它。设置服务器密码后,下一步将在Windows服务窗口中输入,当时我们的默认服务名称为” MySQL80″。在一些参考书中,让我们直接输入” net start MySQL”,读者将在实际 *** 作中复制该副本,并且服务名称将无效。如果忘记了服务名称,则可以使用win + R打开窗口,然后输入servicesmsc以查找mysql的服务名称。

1 百词斩

支持初中到考研以及出国的各种词库。

图文语音并茂,不再是枯燥的文字学习。

支持单词锁屏(可以在解锁时背单词)。

2 超级瑞士军刀

集成了很多小工具,装机必备啊

3 Adobe Photoshop Touch

即PS Touch。手机上最专业的修图软件

4 SQLite Editor

手机上的数据库编辑器

5 终端模拟器

手机上的命令行

6 尖端启动器

支持隐藏应用。关键是这个名字不会产生此地无银三百两的感觉。还有不少桌面/UI/主题也支持隐藏应用。

7 XPOSED框架

让手机像电脑一样多窗口

8 bochs模拟器

在模拟器中运行电脑用的Windows系统,在系统中运行电脑软件、游戏。

9 Shazam

听音识曲软件。另外酷狗音乐也支持听音识曲

10 下雨了

可以看哪块云彩有雨

11 AutoCAD 360

手机上的CAD

12 全景相机

可以拍摄全景相片

13 虚拟按键助手

当按键不好用的时候用它就可以让手机继续使用了

14 MyPantone

色盘。做编辑也许会用到

15 MySQL Manager

在手机上连接管理MySQL数据库

16 Scanbot

PDF扫描仪

17 金山共享精灵

无需数据线,只需要通过网络就能管理手机

18 向日葵远程控制

可以和其他智能设备进行互相控制。类似软件还有Teamviewer

19 免费看书听书

一款真正能够把txt朗读出来的app

20 AIDE

在手机上进行安卓软件、游戏开发

21 C4Droid

在手机上运行C代码

22 触宝输入法

支持拼音、五笔、笔画、英文(支持滑行输入)、语音(支持普通话、粤语、英语、四川话、河南话)、手写、注音、仓颉、 中文速成等输入方式

支持生僻字,支持简繁转换(可以输入简体然后转换成繁体)

支持智能纠错(误按键纠错)

有剪贴板功能。能够锁定剪贴板内容(可以把常用的句子复制,然后去输入法的剪贴板中锁定即可在以后需要时快速输入)

其他的输入法该有的也有,比如换肤、更新词库、调节键盘大小、切换键盘布局

荣获了2009全球移动通信系统协会 (GSMA)全球移动创新大奖总冠军!打破了中国本土企业在全球移动创新领域零的突破!

23 LittlePhoto

音量键拍照

24 RE管理器

结合root权限,可以对系统做任意修改

25 金山隐私保险箱

对手机应用、文件进行加密。

26 来电闪光灯

顾名思义

27 APK重命名专业版

当手机上下载了很多安装包的时候,一个一个重命名很麻烦,用这个软件可以一键批量重命名。

以上就是关于JAVA 正常网页 *** 作插入mysql数据库中文不乱码,通过手机push上手机系统文件中文全部乱码。全部的内容,包括:JAVA 正常网页 *** 作插入mysql数据库中文不乱码,通过手机push上手机系统文件中文全部乱码。、jdbc连接数据库的代码问题jdbc连接mysql数据库、用eclipse连接MySQL,实现简单的增删改差,比如手机话费,但update增方法时,出问题了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10195658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存