本教程分享:《dbhelper》,

DBHelper类

求一个完整的DBHelper类,最好是写上每一步的注释,哪一步是干嘛的,求代码,求高手,如有请给我贴上,分不多不胜感激。...

求一个完整的DBHelper类,最好是写上每一步的注释,哪一步是干嘛的 ,求代码,求高手,如有请给我贴上,分不多 不胜感激 。

sql的

using System;

using System.Collections.Generic;

using System.Text;

using System.Data.SqlClient;

using System.Data;

using System.Configuration;

namespace DAL

{

public class SqlHelper

{

public static string cons = ConfigurationManager.ConnectionStrings["AliCon"].ConnectionString;

///

/// one

///

/// sql

/// object

public static object ExeOnlyOne(string sqlcmd)

{

object oRs = null;

using(SqlConnection con = new SqlConnection())

{

con.ConnectionString = cons;

SqlCommand cmd = new SqlCommand(sqlcmd, con);

con.Open();

oRs = cmd.ExecuteScalar();

con.Close();

}

return oRs;

}

public static object ExeOnlyOne(string sqlcmd,params SqlParameter[] pars)

{

object oRs = null;

using (SqlConnection con = new SqlConnection())

{

con.ConnectionString = cons;

SqlCommand cmd = new SqlCommand(sqlcmd, con);

cmd.Parameters.AddRange(pars);

con.Open();

oRs = cmd.ExecuteScalar();

con.Close();

}

return oRs;

}

///

/// insert update delete

///

/// sql

/// int

public static int ExeCUD(string sqlcmd)

{

int iRs = -1;

using (SqlConnection con = new SqlConnection())

{

con.ConnectionString = cons;

SqlCommand cmd = new SqlCommand(sqlcmd, con);

con.Open();

iRs = cmd.ExecuteNonQuery();

con.Close();

}

return iRs;

}

public static int ExeCUD(string sqlcmd,params SqlParameter[] pars)

{

int iRs = -1;

using (SqlConnection con = new SqlConnection())

{

con.ConnectionString = cons;

SqlCommand cmd = new SqlCommand(sqlcmd, con);

cmd.Parameters.AddRange(pars);

con.Open();

iRs = cmd.ExecuteNonQuery();

con.Close();

}

return iRs;

}

///

/// all

///

/// sql

/// DataTable

public static DataTable ExeAll(string sqlcmd)

{

DataTable dt = null;

using (SqlConnection con = new SqlConnection())

{

con.ConnectionString = cons;

SqlDataAdapter sda = new SqlDataAdapter(sqlcmd,con);

DataSet ds = new DataSet();

sda.Fill(ds);

dt = ds.Tables[0];

}

return dt;

}

public static DataTable ExeAll(string sqlcmd,params SqlParameter[] pars)

{

DataTable dt = null;

using (SqlConnection con = new SqlConnection())

{

con.ConnectionString = cons;

SqlDataAdapter sda = new SqlDataAdapter(sqlcmd, con);

sda.SelectCommand.Parameters.AddRange(pars);

DataSet ds = new DataSet();

sda.Fill(ds);

dt = ds.Tables[0];

}

return dt;

}

///

/// all

///

/// sql

/// SqlDataReader

public static SqlDataReader ExeReader(string sqlcmd)

{

SqlConnection con = new SqlConnection();

con.ConnectionString = cons;

SqlCommand cmd = new SqlCommand(sqlcmd, con);

con.Open();

SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return sdr;

}

public static SqlDataReader ExeReader(string sqlcmd,params SqlParameter[] pars)

{

SqlConnection con = new SqlConnection();

con.ConnectionString = cons;

SqlCommand cmd = new SqlCommand(sqlcmd, con);

cmd.Parameters.AddRange(pars);

con.Open();

SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return sdr;

}

}

}

access的

using System;

using System.Data;

using System.Data.OleDb;

using System.Configuration;

namespace DAL

{

///

/// OLEDBHelper 的摘要说明

///

public class OLEDBHelper

{

///

/// 连接数据库字符串

///

public static string strCon = ConfigurationManager.ConnectionStrings["DemoCon"].ConnectionString;

///

/// 执行得到一行一列

///

/// sql语句

/// object对象

public static object ExeOnlyOne(string sqlText)

{

object oRs = null;

using (OleDbConnection con = new OleDbConnection())

{

con.ConnectionString = strCon;

OleDbCommand cmd = new OleDbCommand();

cmd.CommandText = sqlText;

cmd.Connection = con;

con.Open();

oRs = cmd.ExecuteScalar();

con.Close();

}

return oRs;

}

///

/// 重载ExecuteOnlyOne

///

/// 命令

/// 参数【个数不定】

///

public static object ExeOnlyOne(string sqlText, params OleDbParameter[] pars)

{

object oRs = null;

using (OleDbConnection con = new OleDbConnection())

{

con.ConnectionString = strCon;

OleDbCommand cmd = new OleDbCommand();

cmd.CommandText = sqlText;

cmd.Connection = con;

cmd.Parameters.AddRange(pars);

con.Open();

oRs = cmd.ExecuteScalar();

con.Close();

}

return oRs;

}

///

/// 执行Insert update delete语句

///

/// sql语句

/// 受影响行数

public static int ExeCUD(string sqlText)

{

int iRs = 0;

using (OleDbConnection con = new OleDbConnection())

{

con.ConnectionString = strCon;

OleDbCommand cmd = new OleDbCommand();

cmd.CommandText = sqlText;

cmd.Connection = con;

con.Open();

iRs = cmd.ExecuteNonQuery();

con.Close();

}

return iRs;

}

///

/// 执行带参数的Insert update delete语句

///

/// sql语句

/// 参数

/// 受影响行数

public static int ExeCUD(string sqlText, params OleDbParameter[] pars)

{

int iRs = 0;

using (OleDbConnection con = new OleDbConnection())

{

con.ConnectionString = strCon;

OleDbCommand cmd = new OleDbCommand();

cmd.CommandText = sqlText;

cmd.Connection = con;

cmd.Parameters.AddRange(pars);

con.Open();

iRs = cmd.ExecuteNonQuery();

con.Close();

}

return iRs;

}

///

/// 查询多条结果

///

/// sql语句

/// DataTable

public static DataTable ExeAll(string sqlText)

{

DataTable dtRs = null;

using (OleDbConnection con = new OleDbConnection())

{

con.ConnectionString = strCon;

OleDbDataAdapter sda = new OleDbDataAdapter();

sda.SelectCommand = new OleDbCommand(sqlText, con);

DataSet ds = new DataSet();

sda.Fill(ds);

dtRs = ds.Tables[0];

}

return dtRs;

}

///

/// 查询带参的多条结果

///

/// sql语句

/// 参数

/// DataTable

public static DataTable ExeAll(string sqlText, params OleDbParameter[] pars)

{

DataTable dtRs = null;

using (OleDbConnection con = new OleDbConnection())

{

con.ConnectionString = strCon;

OleDbDataAdapter sda = new OleDbDataAdapter();

sda.SelectCommand = new OleDbCommand(sqlText, con);

sda.SelectCommand.Parameters.AddRange(pars);

DataSet ds = new DataSet();

sda.Fill(ds);

dtRs = ds.Tables[0];

}

return dtRs;

}

///

/// 游标读取数据SqlDataReader

///

/// 语句

/// OleDbDataReader

public static OleDbDataReader ExeReader(string sqlText)

{

OleDbDataReader sdrRs = null;

OleDbConnection con = new OleDbConnection();

con.ConnectionString = strCon;

OleDbCommand cmd = new OleDbCommand();

cmd.Connection = con;

cmd.CommandText = sqlText;

con.Open();

sdrRs = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return sdrRs;

}

///

/// 带参reader的sql语句执行

///

/// 语句

/// 参数

/// OleDbDataReader

public static OleDbDataReader ExeReader(string sqlText, params OleDbParameter[] pars)

{

OleDbDataReader sdrRs = null;

OleDbConnection con = new OleDbConnection();

con.ConnectionString = strCon;

OleDbCommand cmd = new OleDbCommand();

cmd.Connection = con;

cmd.CommandText = sqlText;

cmd.Parameters.AddRange(pars);

con.Open();

sdrRs = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return sdrRs;

}

}

}

实现继承 SQLiteOpenHelper 类的 dbHelper 类?

移动应用开发怎么实现继承SQLiteOpenHelper类的dbHelper类?...

移动应用开发怎么实现继承 SQLiteOpenHelper 类的 dbHelper 类?

.NET DBHelper 类的调用问题

DBHelper类怎么调用呢,在百度有说直接调用的,还有找DBHelper类代码的难道是先写好代码才可以用吗,还是在调用前要做一些操作引用呢。我直接调用是报错的呀,请大侠指教...

DBHelper 类 怎么调用呢 ,在百度有说直接调用的,还有找DBHelper 类代码的

难道是先写好代码才可以用吗,还是在调用前要做一些操作引用呢。

我直接调用是报错的呀,请大侠指教

如果你是三层架构的,那么DBHelper一般会放在DAL数据层。

一般用到DBHelper也就在数据层了,同一个层不需要引用,如果这个DBHelper是静态类的话,那么类名.方法或属性就可以直接调用了。

如果不是静态类,那么用的时候NEW个对象出来再调用DBHelper的相关方法或属性就可以了。

备注:如果你使用DBHelper类的位置和DBHelper所在的位置不在同一个类库下,那么这个时候是需要引用DBHelper类所在的这个类库的。

老大太高深了 我自己研究的.net 就是跳转窗口刚弄明白的水平,

做了一个方法

直接调用,报错

能说的初级的知识吗 麻烦了谢谢

资料提供的DBHelper 抄了一遍 报错k

m

追答

三2句也说不请,留个联系方式,我加你。

android程序数据库问题... DBHelper helper = new ...

DBHelper是我重写的类,单独建立了一个DBHelper.java用来说明数据库,然后实例化了一个数据库,DB_NAME应该同oncreat(SQLiteDatabase***)里的***一致吧?version的值是啥呀?...还有实...

DBHelper是我重写的类,单独建立了一个DBHelper.java用来说明数据库,然后实例化了一个数据库,DB_NAME应该同oncreat(SQLiteDatabase ***)里的***一致吧?version的值是啥呀?...

还有实例化数据库以后,写个这个:SQLiteDatabase db = carhelper.getWritableDatabase(); 在多个.java文件中实行数据库操作是都指向同一个数据库吗?

真是纠结了,跪求帮助

DBHelper helper = new DBHelper(this, DB_NAME, null, VERSION); 应该写在哪里啊?老是报错

提示DB_NAME和VERSION不能被定义成变量,可是我看很多源码都是这么写的...帮帮我吧...这句话怎么写呀?DB_NAME和VERSION是前面要定义还是就这么写呀?

展开

这里用ContentProvider方法来定义数据库。。

public class AlarmProvider extends ContentProvider //

{

private static final String DB_NAME = "Alarm.db"; //数据库名

private static final int DB_VERSION = 1;//版本号,当程序第一次运行时,数据库被建立,如果

//你更改了数据库,如增加一个表,这时,这个值一般要改一下,这样程序再次安装运行

//时,数据库可自行升级。。如果不改通常要手动删除数据库。。

private static final String ALARM_TABLE_NAME = "alarm"; //一个表名

private static final int ALARM = 1; //与表对应的整数值,相当于id

private static UriMatcher mUriMathcer; //Uri匹配器,建立uri,表名,id三者之间的关系,如下:

static{

mUriMathcer = new UriMatcher(UriMatcher.NO_MATCH);

mUriMathcer.addURI(AlarmInfo.AUTH, "alarm", ALARM);

}

private interface CreateTableInterface //表创建接口

{

public abstract void createAlarmTable(SQLiteDatabase db);

}

//内部类,数据库助手类,并实现表创建接口

private static class DatabaseHelper extends SQLiteOpenHelper implements CreateTableInterface

{

CreateTableInterface mCreateTableInterface = this;

Context mContext = null;

//构造函数,该函数调用后,数据库没有

//创建。。也就是下面的onCreate不会在它调用后就立即调用创建db

public DatabaseHelper(Context context)

{

super(context, DB_NAME, null, DB_VERSION);

// Log.i(TAG, "DatabaseHelper be called!");

mContext = context;

}

@Override

public void onCreate(SQLiteDatabase db) //这个方法只在第一次db连接创建db时调用,只一次

{

//create db table

mCreateTableInterface.createAlarmTable(db);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) //db升级时调用

{

// Log.i(TAG, "onUpgrade() be called!");

db.execSQL("DROP TABLE IF EXISTS "+ALARM_TABLE_NAME);

onCreate(db);

}

@Override

public void createAlarmTable(SQLiteDatabase db)

{

// 创建表

db.execSQL("CREATE TABLE "+ALARM_TABLE_NAME+" ("

+AlarmInfo._ID+" INTEGER PRIMARY KEY,"

+AlarmInfo._LABEL+" TEXT NOT NULL,"

+AlarmInfo._TIME+" TEXT NOT NULL,"

+AlarmInfo._ALERT+" TEXT NOT NULL,"

+AlarmInfo._REPEAT+" TEXT NOT NULL,"

+AlarmInfo._ACTIVE+" TEXT NOT NULL"

+");");

//在表中插入一些数据。。。

db.execSQL("INSERT INTO "+ALARM_TABLE_NAME+"("+AlarmInfo._LABEL+","

+AlarmInfo._TIME+","+AlarmInfo._ALERT+","

+AlarmInfo._REPEAT+","+AlarmInfo._ACTIVE+

") VALUES('Lunch Alarm','11 : 45 AM','"+Tag.TONE+"','"+Tag.EVERY_DAY+"','false');");

db.execSQL("INSERT INTO "+ALARM_TABLE_NAME+"("+AlarmInfo._LABEL+","

+AlarmInfo._TIME+","+AlarmInfo._ALERT+","

+AlarmInfo._REPEAT+","+AlarmInfo._ACTIVE

+") VALUES('Work Alarm','08 : 45 AM','"+Tag.TONE+"',"+"'Mon,Tue,Wed,Thu,Fri'"

+",'false');");

db.execSQL("INSERT INTO "+ALARM_TABLE_NAME+"("+AlarmInfo._LABEL+","

+AlarmInfo._TIME+","+AlarmInfo._ALERT+","+AlarmInfo._REPEAT+","

+AlarmInfo._ACTIVE

+") VALUES('Work Alarm','09 : 00 AM','"+Tag.TONE+"',"

+"'"+Tag.WEEKENDS+"','false');");

db.execSQL("INSERT INTO "+ALARM_TABLE_NAME+"("+AlarmInfo._LABEL+","

+AlarmInfo._TIME+","+AlarmInfo._ALERT+","+AlarmInfo._REPEAT+","

+AlarmInfo._ACTIVE

+") VALUES('Yoga','10 : 15 PM','"+Tag.TONE+"',"+"'Sun,Wed','false');");

}

}

}

private DatabaseHelper mDatabaseHelper; //定义helper

//以下重写insert,delete,update,query等方法

@Override

public synchronized int delete(Uri uri, String selection, String[] selectionArgs)

{

SQLiteDatabase db = null;

boolean success = false;

int count = 0;

try{

db = mDatabaseHelper.getWritableDatabase();

db.acquireReference();

success = true;

switch(mUriMathcer.match(uri)){

case ALARM:

count = db.delete(ALARM_TABLE_NAME, selection, selectionArgs);

break;

}

}catch(SQLException e){

e.printStackTrace();

}finally{

if(success == true){

db.releaseReference();

}

}

return count;

}

@Override

public String getType(Uri uri)

{

switch(mUriMathcer.match(uri)){

case ALARM:

return AlarmInfo.CONTENT_TYPE;

default:

throw new IllegalArgumentException("Unknown URI " + uri);

}

}

@Override

public synchronized Uri insert(Uri uri, ContentValues initValues)

{

SQLiteDatabase mSQLiteDatabase = null;

boolean success = false;

try{

mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();

mSQLiteDatabase.acquireReference();

success = true;

long mRowId;

ContentValues values;

if(initValues == null){

values = new ContentValues();

}else{

values = initValues;

}

switch(mUriMathcer.match(uri)){

case ALARM:

mRowId = mSQLiteDatabase.insert(ALARM_TABLE_NAME,

AlarmInfo._ID, values);

if(mRowId > 0){

return uri;

}else{

throw new SQLException("Failed to insert to "+uri);

}

}

}catch(SQLException e){

e.printStackTrace();

}finally{

if(success == true)

mSQLiteDatabase.releaseReference();

}

return null;

}

@Override

public boolean onCreate()

{

// Log.i("alarm provider", "onCreate()...");

mDatabaseHelper = new DatabaseHelper(getContext());

return true;

}

@Override

public synchronized Cursor query(Uri uri, String[] projection, String selection,

String[] selectionArgs, String sortOrder)

{

SQLiteQueryBuilder mSQLiteQueryBuilder = new SQLiteQueryBuilder();

switch(mUriMathcer.match(uri)){

case ALARM:

mSQLiteQueryBuilder.setTables(ALARM_TABLE_NAME);

break;

}

SQLiteDatabase mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();

mSQLiteDatabase.acquireReference();

Cursor mCursor = mSQLiteQueryBuilder.query(mSQLiteDatabase, projection,

selection, selectionArgs, null, null, sortOrder);

mSQLiteDatabase.releaseReference();

return mCursor;

}

@Override

public synchronized int update(Uri uri, ContentValues values, String selection,

String[] selectionArgs)

{

SQLiteDatabase mSQLiteDatabase = null;

int count = 0;

boolean success = false;

try{

mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();

mSQLiteDatabase.acquireReference();

success = true;

switch(mUriMathcer.match(uri)){

case ALARM:

count = mSQLiteDatabase.update(ALARM_TABLE_NAME, values,

selection, selectionArgs);

break;

default:

break;

}

}catch(SQLException e){

e.printStackTrace();

}finally{

if(success == true)

mSQLiteDatabase.releaseReference();

}

return count;

}

}

可以参考android alarm源码,query,update等方法写法基本不改什么,只替换表名。或增加一个case.

DBHelper类中的.ExecuteCommand和.GetScalar区别是...

其实你只需明白

GetScalar()方法只返回 第一行第一列

就知道区别了吧

ExecuteCommand,却返回所有你要查询的

比如 select top 10 * from userInfo

那么ExecuteCommand就返回了10行

而 GetScalar只返回了一行,而且是只有第一列的一行

安卓 DBhelper

我想使用DBhelper,数据库已经做好了,需要放在哪个文件夹,怎么使用,主要是构造函数怎么写?已经有了数据库,只需要使用,不需创建,该怎么办?就是说数据库是用外部程序创建的。...

我想使用DBhelper,数据库已经做好了,需要放在哪个文件夹,怎么使用,主要是构造函数怎么写?

已经有了数据库,只需要使用,不需创建,该怎么办?就是说数据库是用外部程序创建的。

一般就放在工程目录下的

大致的写法如下,都是大同小异的,就是一些需求可能有区别:

public class MyDBHelper extends SQLiteOpenHelper {

private static final int VERSION = 2;

public static final String DBName = "userinfos";

public static final String USER_TABLE_NAME = "users";

private String CREATE_TABLE = "create table if not exists "+USER_TABLE_NAME+"(personid integer primary key,name varchar(20),age integer)";

public MyDBHelper (Context context, String name, CursorFactory factory, int version) {

super(context, name, factory, VERSION);

}

/**

* 对外创建该类的时候就用这个方法,比较方便,因为数据库的版本号以及CursorFactory一般也不会改变。

* @param context

*/

public MyDBHelper(Context context) {

super(context, DBName, null, VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL( CREATE_TABLE);

}

}

在Android开发中 DatabaseHelper dbHelper = new D...

这个应该是数据库名字吧,DatabaseHelper这个类是被你又封闭过的,通常是继承SQLiteOpenHelper 类,重写一下以方便管理数据库。

实现继承 SQLiteOpenHelper 类的 dbHelper 类。

《移动应用开发》应用于安卓系统,如何实现继承SQLiteOpenHelper类的dbHelper类。要求:逻辑结构完整,答案要点突出,论述充分,每题答案字数不少于400字。...

《移动应用开发》应用于安卓系统,如何实现继承 SQLiteOpenHelper 类的 dbHelper 类。

要求:逻辑结构完整,答案要点突出,论述充分,每题答案字数不少于400字。

Android是有自带的类库的:SQLiteOpenHelper,使用的时候继承这个类,然后写逻辑就可以,一般使用单例模式: public synchronized static DBHelper getDBHelper(Context context) { if (helper == null) { helper = new DBHelper(context); } return helper; } private DBHelper(Context context) { super(context, "自己的数据库名", null, 数据库版本); } 使用的时候也很简单,下面是一个删除操作: public synchronized void deleteSite(String packname) { SQLiteDatabase db = getWritableDatabase(); try { db.beginTransaction(); db.delete("site", "packname=?", new String[] { packname }); db.setTransactionSuccessful(); } finally { db.endTransaction(); if (db != null) { } } }

C# 里面DBhelper helper = new DBHelper(); 是什么...

DBhelper这个通常是连接数据库的类,是自己定义的,意思就是你定义的时候想起什么名就什么名。DBhelper这个类里面有一个连接数据库方法,DBhelper helper = new DBHelper(); 是用来实例化一个类的对象,用这个对象helper来调用里面连接数据库的方法。

C#怎么使用DBHelper类连接数据库?

首先你得有DBHelpler这个类,然后你看这个类中你要进行调用的方法是不是静态的如果是静态的直接用类名.方法名即可,前提是引用这个类的命名空间,如果不是静态的话,那么就new一下这个类,然后用这个new的DBHelper的变量点出你要用的方法即可,如果你没有DBHelper的话,你可以去下载一个,或者找一个,或者自己写一个。

追问

复制过来的 我自己也能找到呀 就是没懂才问的啦

java mysql dbhelper_dbhelper-DBHelper,使用相关推荐

  1. java mysql dbhelper_DbHelper通用数据库类及增删改 使用示例

    DbHelper db = new DbHelper(); protected void Page_Load(object sender, EventArgs e) { } //新增数据 protec ...

  2. java mysql 死锁,java-Spring JPA MySQL和死锁

    我正在研究使用Spring Boot在Java中实现的REST API.我使用了嵌入式内存数据库H2数周,但在某个时候我注意到事务隔离存在问题. 更准确地说,我有一个表,需要在其中跟踪"重复 ...

  3. java mysql embedded,java-将MySQL Connector / MXJ用于应用程序的优点/缺点/替代品有哪些...

    我最近使用Play Framework和MySQL Connector / MXJ制作了一个有趣的应用程序,以制作一个具有数据库的完全可移植的Web服务器,而与任何当前安装的软件(包括Java)无关. ...

  4. 【转】Java MySQL数据类型对照

    Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.S ...

  5. java mysql order by,java-使用LIMIT和MySQL进行ORDER BY

    我在使用MySQL查询时遇到问题,在该查询中我得到了一个带有LIMIT 1的行.但是,将其与order一起使用时,它不起作用. 在mysql工作台中运行的查询如下: select * from tra ...

  6. java+mysql学生学籍后台管理系统源码

    介绍: java+mysql学生学籍后台管理系统源码 网盘下载地址: http://kekewl.cc/ikZ3un3U9en0 图片:

  7. java+mysql校园学校宿舍管理系统源码

    简介: java+mysql校园学校宿舍管理系统源码,分为系统管理员.宿舍管理员和学生登录管理 网盘下载地址: http://kekewl.org/K8tZYGnKgYi0 图片:

  8. java mysql 数据类型对照

    java mysql 数据类型对照 java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N ...

  9. mysql 源码设计,java+mysql大学网络社区平台设计+源代码

    摘要如今,信息管理与信息系统的网络平台上,更多的都是一些静态信息的介绍,缺乏老师与老师之间, 老师与同学之间信息的交流的功能. 因此, 需要建立一个从 Web 1.0转换到 Web 2.0 的, 能够 ...

  10. Java+MySQL实现评论功能设计开发

    Java+MySQL实现评论功能设计开发 一.背景 项目初始版本上线,有时间写点东西记录一下项目中的心得体会,通过这个项目学习了很多,要写下来的有很多,先从评论功能开始吧.由于项目需要增加评论功能,之 ...

最新文章

  1. Kotlin开发springboot项目(一)
  2. javascript最快入门
  3. Elasticsearch基础教程ES
  4. 如何成立一家私募基金公司
  5. 【NOIP2015模拟10.22】矩形
  6. Boost:align down向下对齐的测试程序
  7. 推荐算法-关联分析(关联规则)
  8. 黑科技揭秘:眼科大夫如何应用5G+8K完成远程会诊?
  9. python有几种_Python常见的几种算法
  10. 智能电子秤全国产化电子元件推荐方案
  11. FFMPEG硬件编解码器使用
  12. 自考计算机00051笔记,自考00051 管理系统中计算机应用自考笔记自考小抄.doc
  13. 搜狗站长工具:索引量与收录量的解释,它等同于site的收录吗?
  14. linux看温度命令,linux查看cpu温度命令
  15. css动画帧动画效果,css逐帧动画
  16. 超详细 Windows 系统安装教程
  17. 最全的Gateway统一网关快速入门
  18. SCUT校赛130:对抗女巫的魔法碎片(思维)
  19. unity的C#学习——标识符号、关键字与数据类型及其转换方式
  20. 多态综合案例——电脑的USB 接口

热门文章

  1. CentOS7环境下安装Pythong3.7.0和Django2.0.7
  2. R语言使用dplyr包的arrange函数进行dataframe排序、arrange函数基于一个字段(变量)进行降序排序实战
  3. Android之多媒体技术
  4. 各种各样装修风格的茶室特点
  5. Linux对N卡的兼容性
  6. 服务端安全之XML外部实体注入(XXE)
  7. 计算机考研自命题院校双非,双非三跨心理学:最难不是复习,而是前期抉择(跨考必看!!)...
  8. linux S5PV210开发板刷系统浅析
  9. 计算机网络安全教程 石国志,秦文陡 10515140263 网络安全课程设计.doc
  10. Linux rm命令 删除文件夹或文件