精华内容
下载资源
问答
  • 安卓中对数据库的操作,封装了各种增删改查的操作,并且包含有实体类,以及对数据库操作的dao,在实际开发的项目中可以直接拿来使用,希望对各位的实际项目开发有所帮助。
  • 使用GreenDao框架首先要进行环境配置 一.首先再moudle gradle中添加环境配置 1.在顶部添加apply ...targetGenDir ‘src/main/java’//生成数据库文件的目录(不用) 3.在dependencies中添加 compile ‘org.greenr
  • 展开全部一、62616964757a686964616fe58685e5aeb931333365653163:有2种方法1.使用insert插入单行数据:语法:insert [into] [列名] values 例:insert into Strdents (姓名,性别,出生日期) values ('王伟华','男'...

    展开全部

    一、62616964757a686964616fe58685e5aeb931333365653163增:有2种方法

    1.使用insert插入单行数据:

    语法:insert [into] [列名] values

    例:insert into Strdents (姓名,性别,出生日期) values ('王伟华','男','1983/6/15')

    注意:如果省略表名,将依次插入所有列

    2.使用insert,select语句将现有表中的 数据添加到已有的新表中

    语法:insert into select from

    例:insert into addressList ('姓名','地址','电子邮件')select name,address,email

    from  Strdents

    注意:查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致

    二、删:有2中方法

    1.使用delete删除数据某些数据

    语法:delete from [where ]

    例:delete from a where name='王伟华'(删除表a中列值为王伟华的行)

    注意:删除整行不是删除单个字段,所以在delete后面不能出现字段名

    2.使用truncate table 删除整个表的数据

    语法:truncate table

    例:truncate table addressList

    注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能

    用于有外建约束引用的表

    三、改  使用update更新修改数据

    语法:update set [where ]

    例:update addressList set 年龄=18 where 姓名='王伟华'

    注意:set后面可以紧随多个数据列的更新值(非数字要引号);where子句是可选的(非数字要引号),用来限制条件,如果不选则整个表的所有行都被更新

    四、查

    语法:select from [where ] [order by

    名>[asc或desc]]

    1).查询所有数据行和列

    例:select * from a

    说明:查询a表中所有行和

    2).查询部分行列--条件查询

    例:select i,j,k   from  a   where f=5

    说明:查询表a中f=5的所有行,并显示i,j,k3列

    3).在查询中使用AS更改列名

    例:select name as 姓名 from a where  gender='男'

    说明:查询a表中性别为男的所有行,显示name列,并将name列改名为(姓名)显示

    4).查询空行

    例:select name from a where email is null

    说明:查询表a中email为空的所有行,并显示name列;SQL语句中用is null或者is not null

    来判断是否为空行

    5).在查询中使用常量

    例:select name '北京' as 地址 from a

    说明:查询表a,显示name列,并添加地址列,其列值都为'北京'

    6).查询返回限制行数(关键字:top )

    例1:select top 6 name from a

    说明:查询表a,显示列name的前6行,top为关键字(oracle 中没有top关键字

    用rownum替代)

    select   *   from   a where   rownum<6

    7).查询排序(关键字:order by , asc , desc)

    例:select name

    from a

    where grade>=60

    order by desc

    说明:查询表中成绩大于等于60的所有行,并按降序显示name列;默认为ASC升序

    展开全文
  • 第四个参数 是数据库的版本号 数据库只能升级 , 不能降级 , 版本号只能变大不能变小 super (context, "saiermeng.db" , null , 2); } //Called when the database is created for the first time. ...


    第一步:在xml布局中编辑

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

        xmlns:tools="http://schemas.android.com/tools"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical"

        tools:context=".MainActivity" >

       <EditText 

           android:id="@+id/et_name"

           android:layout_width="match_parent"

           android:layout_height="wrap_content"

           android:hint="请输入联系人的姓名"/>

       <EditText 

           android:layout_height="wrap_content"

           android:layout_width="match_parent"

           android:id="@+id/et_phone"

           android:hint="请输入联系人的电话"

           android:inputType="phone"/>

       <Button 

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           android:text="添加"

          android:onClick="add"/>

       <Button 

           android:layout_width="match_parent"

           android:layout_height="wrap_content"

           android:text="删除"

           android:onClick="delete"/>

       <Button 

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           android:text="修改"

           android:onClick="update"/>

       <Button 

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           android:text="查询"

           android:onClick="query"/>

    </LinearLayout>

    第二步:建立一个数据库的帮助类

    /**

     * 数据库创建的帮助类 类似File

     * @author Administrator

     *

     */

    public class MyDBOpenHelper extends SQLiteOpenHelper {

    /**

     * @param context 上下文

     * @param version

     */

    public MyDBOpenHelper(Context context) {

    //第二个参数数据库的名称

    //第三个参数null代表的是默认的游标工厂

    //第四个参数 是数据库的版本号  数据库只能升级,不能降级,版本号只能变大不能变小

    super(context, "saiermeng.db", null, 2);

    }

    //Called when the database is created for the first time.

    //当数据库第一次被创建的时候调用的方法,适合在这个方法里面把数据库的表结构定义出来.

    @Override

    public void onCreate(SQLiteDatabase db) {

    System.out.println("oncreate 数据库被创建了. 哈哈哈哈,嘎嘎嘎------------");

    //执行sql语句

    db.execSQL("create table contactinfo (id integer primary key autoincrement, name varchar(20), phone varchar(20))");

    }

    //Called when the database needs to be upgraded.

    //当数据库更新的时候调用的方法

    @Override

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

    System.out.println("onUpgrade 数据库被更新了. oldVersion:"+oldVersion+"--------newVersion:"+newVersion+"----");

    db.execSQL("alter table contactinfo add account varchar(20)");

    }

    }

    第三步:另建一个包,创建一个联系人信息的类

    /**

     * 联系人数据库表的访问类

     */

    public class ContactInfoDao {

    /**

     * 数据库打开的帮助类

     */

    private MyDBOpenHelper helper;

    /**

     * 在构造方法里面完成 必须要用的类的初始化

     * @param context

     */

    public ContactInfoDao(Context context) {

    helper = new MyDBOpenHelper(context);

    }

     

    /**

     * 添加一条记录

     * @param name 联系人姓名

     * @param phone 联系人电话

     * @return 返回的是添加后在数据库的行号  -1代表添加失败

     */

    public long add(String name, String phone){

    SQLiteDatabase db = helper.getWritableDatabase();

    //db.execSQL("insert into contactinfo (name,phone) values (?,?)", new Object[]{name,phone});

    ContentValues values = new ContentValues();

    values.put("name", name);

    values.put("phone", phone);

    //内部是组拼sql语句实现的.

    long rowid = db.insert("contactinfo", null, values);

    //记得释放数据库资源

    db.close();

    return rowid;

    }

    /**

     * 根据姓名删除一条记录

     * @param name 要删除的联系人的姓名

     * @return 返回0代表的是没有删除任何的记录 返回整数int值代表删除了几条数据

     */

    public int delete(String name){

    //判断这个数据是否存在.

    SQLiteDatabase db = helper.getWritableDatabase();

    //db.execSQL("delete from contactinfo where name=?", new Object[]{name});

    int rowcount = db.delete("contactinfo", "name=?", new String[]{name});

    db.close();

    //再从数据库里面查询一遍,name是否还在

    return rowcount;

    }

    /**

     * 修改联系人电话号码

     * @param newphone 新的电话号码

     * @param name 要修改的联系人姓名

     * @return 0代表一行也没有更新成功, >0 整数代表的是更新了多少行记录

     */

    public int update(String newphone , String name){

    SQLiteDatabase db = helper.getWritableDatabase();

    //db.execSQL("update contactinfo set phone =? where name=?", new Object[]{newphone,name});

    ContentValues values = new ContentValues();

    values.put("phone", newphone);

    int rowcount =  db.update("contactinfo", values, "name=?", new String[]{name});

    db.close();

    return rowcount;

    }

    /**

     * 查询联系人的电话号码

     * @param name 要查询的联系人

     * @return 电话号码

     */

    public String getPhoneNumber(String name){

    String phone = null;

    SQLiteDatabase db = helper.getReadableDatabase();

    //Cursor  cursor = db.rawQuery("select phone from contactinfo where name=?", new String[]{name});

    Cursor  cursor =  db.query("contactinfo", new String[]{"phone"}, "name=?", new String[]{name}, null, null, null);

    if(cursor.moveToNext()){//如果光标可以移动到下一位,代表就是查询到了数据

    phone = cursor.getString(0);

    }

    cursor.close();//关闭掉游标,释放资源

    db.close();//关闭数据库,释放资源

    return phone;

    }

    }

    第四步:在MainActivity.java中编辑逻辑

    public class MainActivity extends Activity {

    private EditText et_name;

    private EditText et_phone;

    private ContactInfoDao dao;

     

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    et_name = (EditText) findViewById(R.id.et_name);

    et_phone = (EditText) findViewById(R.id.et_phone);

    dao = new ContactInfoDao(this);

    }

     

    /**

     * 添加一条联系人的信息

     *

     * @param view

     */

    public void add(View view) {

    String name = et_name.getText().toString().trim();

    String phone = et_phone.getText().toString().trim();

    if (TextUtils.isEmpty(name) || TextUtils.isEmpty(phone)) {

    Toast.makeText(this, "不能为空", 0).show();

    return;

    } else {

    long id = dao.add(name, phone);

    if (id == -1) {

    Toast.makeText(this, "添加失败", 0).show();

    } else {

    Toast.makeText(this, "添加成功,在数据库的第:"+id+"", 0).show();

    }

    }

    }

     

    /**

     * 删除一条记录

     *

     * @param view

     */

    public void delete(View view) {

    String name = et_name.getText().toString().trim();

    if (TextUtils.isEmpty(name)) {

    Toast.makeText(this, "姓名不能为空", 0).show();

    return;

    } else {

    int count = dao.delete(name);

    if(count==0){

    Toast.makeText(this, "删除失败,没有记录", 0).show();

    }else{

    Toast.makeText(this, "删除成功,删除了"+count+"条记录", 0).show();

    }

    }

    }

     

    /**

     * 修改联系人的号码

     *

     * @param view

     */

    public void update(View view) {

    String name = et_name.getText().toString().trim();

    String phone = et_phone.getText().toString().trim();

    if (TextUtils.isEmpty(name) || TextUtils.isEmpty(phone)) {

    Toast.makeText(this, "不能为空", 0).show();

    return;

    } else {

    int count = dao.update(phone, name);

    if(count==0){

    Toast.makeText(this, "更新失败,没有记录", 0).show();

    }else{

    Toast.makeText(this, "更新成功,更新了"+count+"条记录", 0).show();

    }

    }

    }

     

    /**

     * 查询

     *

     * @param view

     */

    public void query(View view) {

    String name = et_name.getText().toString().trim();

    if (TextUtils.isEmpty(name)) {

    Toast.makeText(this, "姓名不能为空", 0).show();

    return;

    } else {

    String result = dao.getPhoneNumber(name);

    Toast.makeText(this, "号码:" + result, 0).show();

    }

    }

    }

     

    第一种:这四种方法都是通过SQL语句实现的

    import android.content.Context;

    import android.database.Cursor;

    import android.database.sqlite.SQLiteDatabase;

     

    import com.saiermeng.createdb.MyDBOpenHelper;

     

    /**

     * 联系人数据库表的访问类

     */

    public class ContactInfoDao {

    /**

     * 数据库打开的帮助类

     */

    private MyDBOpenHelper helper;

    /**

     * 在构造方法里面完成 必须要用的类的初始化

     * @param context

     */

    public ContactInfoDao(Context context) {

    helper = new MyDBOpenHelper(context);

    }

     

    /**

     * 添加一条记录

     * @param name 联系人姓名

     * @param phone 联系人电话

     */

    public void add(String name, String phone){

    SQLiteDatabase db = helper.getWritableDatabase();

    db.execSQL("insert into contactinfo (name,phone) values (?,?)", new Object[]{name,phone});

    //记得释放数据库资源

    db.close();

    }

    /**

     * 根据姓名删除一条记录

     * @param name 要删除的联系人的姓名

     */

    public void delete(String name){

    //判断这个数据是否存在.

    SQLiteDatabase db = helper.getWritableDatabase();

    db.execSQL("delete from contactinfo where name=?", new Object[]{name});

    db.close();

    //再从数据库里面查询一遍,name是否还在

    }

    /**

     * 修改联系人电话号码

     * @param newphone 新的电话号码

     * @param name 要修改的联系人姓名

     */

    public void update(String newphone , String name){

    SQLiteDatabase db = helper.getWritableDatabase();

    db.execSQL("update contactinfo set phone =? where name=?", new Object[]{newphone,name});

    db.close();

    }

    /**

     * 查询联系人的电话号码

     * @param name 要查询的联系人

     * @return 电话号码

     */

    public String getPhoneNumber(String name){

    String phone = null;

    SQLiteDatabase db = helper.getReadableDatabase();

    Cursor  cursor = db.rawQuery("select phone from contactinfo where name=?", new String[]{name});

    if(cursor.moveToNext()){//如果光标可以移动到下一位,代表就是查询到了数据

    phone = cursor.getString(0);

    }

    cursor.close();//关闭掉游标,释放资源

    db.close();//关闭数据库,释放资源

    return phone;

    }

    }

     

    第二种:通过安卓中封装好的方法

    import android.content.ContentValues;

    import android.content.Context;

    import android.database.Cursor;

    import android.database.sqlite.SQLiteDatabase;

     

    import com.saiermeng.createdb.MyDBOpenHelper;

     

    /**

     * 联系人数据库表的访问类

     */

    public class ContactInfoDao {

    /**

     * 数据库打开的帮助类

     */

    private MyDBOpenHelper helper;

    /**

     * 在构造方法里面完成 必须要用的类的初始化

     * @param context

     */

    public ContactInfoDao(Context context) {

    helper = new MyDBOpenHelper(context);

    }

     

    /**

     * 添加一条记录

     * @param name 联系人姓名

     * @param phone 联系人电话

     * @return 返回的是添加后在数据库的行号  -1代表添加失败

     */

    public long add(String name, String phone){

    SQLiteDatabase db = helper.getWritableDatabase();

    //db.execSQL("insert into contactinfo (name,phone) values (?,?)", new Object[]{name,phone});

    ContentValues values = new ContentValues();

    values.put("name", name);

    values.put("phone", phone);

    //内部是组拼sql语句实现的.

    long rowid = db.insert("contactinfo", null, values);

    //记得释放数据库资源

    db.close();

    return rowid;

    }

    /**

     * 根据姓名删除一条记录

     * @param name 要删除的联系人的姓名

     * @return 返回0代表的是没有删除任何的记录 返回整数int值代表删除了几条数据

     */

    public int delete(String name){

    //判断这个数据是否存在.

    SQLiteDatabase db = helper.getWritableDatabase();

    //db.execSQL("delete from contactinfo where name=?", new Object[]{name});

    int rowcount = db.delete("contactinfo", "name=?", new String[]{name});

    db.close();

    //再从数据库里面查询一遍,name是否还在

    return rowcount;

    }

    /**

     * 修改联系人电话号码

     * @param newphone 新的电话号码

     * @param name 要修改的联系人姓名

     * @return 0代表一行也没有更新成功, >0 整数代表的是更新了多少行记录

     */

    public int update(String newphone , String name){

    SQLiteDatabase db = helper.getWritableDatabase();

    //db.execSQL("update contactinfo set phone =? where name=?", new Object[]{newphone,name});

    ContentValues values = new ContentValues();

    values.put("phone", newphone);

    int rowcount =  db.update("contactinfo", values, "name=?", new String[]{name});

    db.close();

    return rowcount;

    }

    /**

     * 查询联系人的电话号码

     * @param name 要查询的联系人

     * @return 电话号码

     */

    public String getPhoneNumber(String name){

    String phone = null;

    SQLiteDatabase db = helper.getReadableDatabase();

    //Cursor  cursor = db.rawQuery("select phone from contactinfo where name=?", new String[]{name});

    Cursor  cursor =  db.query("contactinfo", new String[]{"phone"}, "name=?", new String[]{name}, null, null, null);

    if(cursor.moveToNext()){//如果光标可以移动到下一位,代表就是查询到了数据

    phone = cursor.getString(0);

    }

    cursor.close();//关闭掉游标,释放资源

    db.close();//关闭数据库,释放资源

    return phone;

    }

    }

     


    展开全文
  • 前言: 好久没有复习数据库了,今天用Kotlin封装了一个单例的... * 单例封装数据库工具类(增删改查) */ class MyFuxiSql private constructor(context: Context):SQLiteOpenHelper(context,"sql",null,1) { //伴...

    前言:
    好久没有复习数据库了,今天用Kotlin封装了一个单例的数据库工具类

    /**
     * @author 风尘
     * @time 19.11.10
     * 单例封装数据库工具类(增删改查)
     */
    class MyFuxiSql private constructor(context: Context):SQLiteOpenHelper(context,"sql",null,1) {
       //伴生对象
        companion object{
            private var sql:MyFuxiSql?=null
           //锁
            @Synchronized
            fun getfuxiInsterce(context: Context):MyFuxiSql{
                if(sql==null){
                    sql= MyFuxiSql(context)
                }
             return sql!!;
            }
        }
    
        // 创建表
        override fun onCreate(db: SQLiteDatabase?) {
            db!!.execSQL("create table sql (fuxi int , fuxiname varchar(20))")
        }
        //更新
        override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
        }
    
        //插入数据
        fun getadd(id:Int,name:String){
            val writeableDatabase = sql!!.writableDatabase
            writableDatabase.execSQL("insert into sql values (?,?)", arrayOf(id,name))
        }
    
        //删除数据
        fun getdelete(name:String){
            val writableDatabase = sql!!.writableDatabase
            writableDatabase.execSQL("delete from sql where fuxiname=? ", arrayOf(name))
        }
    
        //修改数据
        fun getupdate(newname:String,oldname:String){
            val writableDatabase = sql!!.writableDatabase
            writableDatabase.execSQL("update sql set fuxiname=? where fuxiname=?", arrayOf(newname,oldname))
        }
    
        //查询数据
        fun getvalues():ArrayList<HashMap<String,Any>>{
            var list= ArrayList<HashMap<String,Any>>()
            val writableDatabase = sql!!.writableDatabase
            val rawQuery = writableDatabase.rawQuery("select * from sql ", null)
            var map:HashMap<String,Any>;
            while (rawQuery.moveToNext()){
                map=HashMap()
                val id = rawQuery.getInt(rawQuery.getColumnIndex("fuxi"))
                val name = rawQuery.getString(rawQuery.getColumnIndex("fuxiname"))
                map.put("id",id);
                map["name"]=name
                list.add(map)
            }
            return list
        }
    }
    
    展开全文
  • 我也不清楚为啥需要5个币 本地的数据库增删改查,原生的数据库,后面也会上传一些三方数据库的使用,例如litepal GreenDao 等
  • 这节讲一下如何使用C#进行数据库增删改查操作,本节以SQL Server数据库为例。.NET 平台,使用ADO.NET 作为与数据库服务器的桥梁,我们通过ADO.NET就可以使用C#语言操作数据库,它的命名空间在System.Data下,要...

        这节讲一下如何使用C#进行数据库的增删改查操作,本节以SQL Server数据库为例。

        .NET 平台,使用ADO.NET 作为与数据库服务器的桥梁,我们通过ADO.NET就可以使用C#语言操作数据库,它的命名空间在System.Data下,要访问SQL Server数据库,就要引用其下的System.Data.SqlClient空间,若使用别的数据库,就要下载对应的包。例如,访问MySql数据库就要下载MySql.Data包。

        我们用C#连接数据库,首先要连接数据库,连接数据库使用的类是SqlConnection

    它需要一个连接字符串,这个连接字符串包含服务器地址,数据库名称,用户名,密码,或者指示为Windows身份登录。它有多种表示形式,一般我使用如下的形式:

    string connString = "server=.;database=student;user id=sa;password=123456";

        这种形式比较好记,server是服务器地址,一个点代表本机,你也可以写ip地址,访问别的机器,database是数据库名称,user id是用户名,一般是sa,password(可以简写为pwd)是密码。

        了解了这两个元素,就能连接数据库了,代码如下:

    SqlConnection connection = new SqlConnection (connString);//注意,此时还没有真正连接,我们需要调用open()方法,打开连接connection.Open();

        连接到数据库后,我们就可以进行下一步执行sql语句了,sql语句的执行需要依赖SqlCommond这个类。SqlComand这个类需要传入sql语句和连接对象,代码如下:

    SqlCommand command=new SqlCommand("此处是sql语句",connection);

        在将具体的增删改查之前,我们还要了解一个类叫SqlParameter,一个SqlParameter就是一个键值对,它的键是sql语句中的变量,值是就是执行sql时的实际的数据,具体声明如下:

    SqlParameter parameters = new SqlParameter("@sname""张三");

       ( sql语句中变量以@开头,如果不熟悉sql这个语言,可以留意我后期的文章。)

        以下是Student数据库的StudentInfo数据表中的所有数据,增删改查的演示都会基于此表:

    21fe96c509d29a2182209528b63e7d9b.png

        查询操作:

            接下来我们演示一下查询,查询李四的所有信息,代码如下:

    SqlParameter[] parameters = new[] { new SqlParameter ("@sname""李四"), };string sql="select SID,SName,SGender from StudentInfo where SName=@sname ";using (SqlConnection connection = new SqlConnection(connString)){  using (SqlCommand command = new SqlCommand (sql, connection))  {      try      {          connection.Open();          if (parameters != null)          {              command.Parameters.AddRange (parameters);          }          //返回SqlDataReader对象,通过这个对象获取数据          SqlDataReader reader = command.ExecuteReader ();          //根据HasRows属性判断是否有数据          if (reader.HasRows)          {              StudentModel data = new StudentModel ();              //将指针下移一行              reader.Read ();              StudentModel sm = new StudentModel ();              //根据索引获取数据              sm.SID = reader.GetInt32(0);              sm.SName = reader.GetString (1);              sm.SGender = reader.GetInt32 (2);              Console.WriteLine(data);          }          return null;      }      catch      {          return null;      }  }}//student实体类class StudentModel{    public int SID { get; set; }    public string SName { get; set; }    public int SGender { get; set; }    public override string ToString ()    {        return $"SID:{SID}\tSName:{SName}\tSGender:{SGender}";    }}

        我们在执行查询时,会先创建一个实体对象,一个实体对象对应数据库中的一行数据。

        执行查询操作,需要调用SqlCommandExecuteReader()方法,改方法返回一个SqlDataReader对象,通过这个对象,我们可以获取数据,它的两个常用属性的用法在代码注释中已写出,下面着重介绍Read()方法和GetXxx()方法。

        如果有数据,SqlDataReader中的指针就指向第0行,我们需要调用Read()方法,将指针下移,如果下一行不为空,该方法返回true,否则返回false。在获取数据时,我们可以根据列数(列数从0开始)和对应的数据类型准确获取到数据,如:SID它是一个int类型,在第一列,我们就可以使用GetInt32(0)来获取到这个数据。另外,我们还可以通过列名去访问:如reader["SID"],这样就会获取到当前这一行中列名为SID的数据。

        使用using是为了运行结束后可以及时的释放掉资源,防止内存泄漏。

        以上代码的运行结果为:

    cc851da63488a6b206a86976d24d77a7.png

        插入,更新,删除:

        把这三个放在一块是因为这三个在代码表现层面是一致的,都是调用SqlCommandExecuteNonQuery()方法,该方法返回int类型的数据,也就是受影响的行数,下面以执行插入的代码为例:

    SqlParameter[] parameters = new[] {     new SqlParameter ("@sname", "王五"),    new SqlParameter ("@sid",20200003),    new SqlParameter ("@sgender",2), };string sql="insert into StudentInfo (SID,SName,SGender) Values(@sid,@sname,@sgender)";using (SqlConnection connection = new SqlConnection(connString)){  using (SqlCommand command = new SqlCommand (sql, connection))  {      try      {          if (parameters != null)          {              command.Parameters.AddRange (parameters);          }         int result= command.ExecuteNonQuery ();//result为1      }      catch      {          return 0;      }  }}

        删除和更新也是一样的,只不过是sql语句不一样,此处不再赘述。

        执行聚合函数:

        SqlCommand类提供了一个ExecuteScalar()来执行聚合函数,聚合函数的返回值是不固定的,所以这个方法的返回值是object,用法也是类似,返回的这个object值就是查询的结果,我们可以拆箱为对应的数据类型进行使用。

       一般我们会将这些操作封装成工具类,从而简化代码,下面贴出我自己写的一个sql工具类,读者可以自行拷贝学习、使用。

    static class ADOUtils{    private static SqlConnection connection = null;    ///     /// 连接数据库    ///     /// 数据库连接字符串    /// 是否连接成功 bool    public static bool ConnDB (string connString)    {        try        {            connection = new SqlConnection (connString);            connection.Open ();            return true;        }        catch        {            connection = null;            return false;        }    }    ///     /// 断开连接    ///     public static void CloseConnect ()    {        connection.Close ();        connection.Dispose ();    }    ///     /// 执行增,删,改操作    ///     /// sal语句    /// 参数    /// 受影响的行数    public static int ExcuteSQL (string sql, SqlParameter[] parameters)    {        if (connection == null)        {            Console.WriteLine ("数据库未连接");            return 0;        }        using (SqlCommand command = new SqlCommand (sql, connection))        {            try            {                if (parameters != null)                {                    command.Parameters.AddRange (parameters);                }                return command.ExecuteNonQuery ();            }            catch            {                return 0;            }        }    }    ///     /// 执行聚合函数操作    ///     /// sql语句    /// 参数    /// 聚合结果,如果执行出错,返回false    public static object ExcuteMethods (string sql, SqlParameter[] parameters)    {        if (connection == null)        {            Console.WriteLine ("数据库未连接");            return 0;        }        using (SqlCommand command = new SqlCommand (sql, connection))        {            try            {                if (parameters != null)                {                    command.Parameters.AddRange (parameters);                }                return command.ExecuteScalar ();            }            catch            {                return false;            }        }    }    ///     /// 执行查询操作(泛型版)    ///     /// sql语句    /// 参数    /// 数据集合,出错返回null    public static List SelectDB (string sql, SqlParameter[] parameters) where T : new()    {        if (connection == null)        {            Console.WriteLine ("数据库未连接");            return null;        }        using (SqlCommand command = new SqlCommand (sql, connection))        {            try            {                if (parameters != null)                {                    command.Parameters.AddRange (parameters);                }                SqlDataReader reader = command.ExecuteReader ();                if (reader.HasRows)                {                    List data = new List ();                    Type type = typeof (T);                    object o = Activator.CreateInstance (type);                    while (reader.Read ())                    {                        foreach (var property in type.GetProperties ())                        {                            property.SetValue (o, reader[property.Name]);                        }                        data.Add ((T)o);                    }                    return data;                }                return null;            }            catch            {                return null;            }        }    }    ///     /// 执行查询操作    ///     /// sql语句    /// 参数    /// 数据集合,出错返回null    public static ListSelectStudentInfo (string sql, SqlParameter[] parameters)    {        if (connection == null)        {            Console.WriteLine ("数据库未连接");            return null;        }        using (SqlCommand command = new SqlCommand (sql, connection))        {            try            {                if (parameters != null)                {                    command.Parameters.AddRange (parameters);                }                SqlDataReader reader = command.ExecuteReader ();                if (reader.HasRows)                {                    List data = new List ();                    while (reader.Read ())                    {                        StudentModel sm = new StudentModel ();                        sm.SID = reader.GetInt32(0);                        sm.SName = reader.GetString (1);                        sm.SGender = reader.GetInt32 (2);                        data.Add (sm);                    }                    return data;                }                return null;            }            catch            {                return null;            }        }     }}

        本节到此结束,下节讲对数据库的一些高级操作...

    展开全文
  • }/*** 添加一条记录到数据库 * *@paramname * 姓名 *@paramnumber * 电话*/ public voidadd(String name, String number) { SQLiteDatabase db=helper.getWritableDatabase(); db.execSQL("insert into person ...
  • SQLite数据库增删改查

    2019-10-03 22:03:30
    安卓开发中不可避免的会遇到在手机中保存数据的时候,如果只是小量数据(如保存设置等)的话,用SharedPreferences是个极好的选择,它以键值对的形式保存数据,但是如果数据量比较多的话,比如一个键对应了一个...
  • 存入之后,可以通过按键,输入文本框(用于输入你要存或者修改的数据),显示文本框(显示查询数据库中的所有信息)对数据库中的信息进行增删改查操作。
  • android平台下数据库的一些概念Sqlite是android平台的一款轻量级的、嵌入式的、关系型数据库产品,以下是一些主要概念。1.Sqlite通过文件保存数据库,创建的数据库文件默认存在在/data/data//databases/的文件夹下,...
  • Mysql数据库操作functionaddtext(){event.returnValue=confirm("确定增加数据吗?");if(event.returnValue){if(document.getElementById("userId").value==""){alert("ID不能为空,请重新输入!");event.returnValue...
  • Mysql数据库操作functionaddtext(){event.returnValue=confirm("确定增加数据吗?");if(event.returnValue){if(document.getElementById("userId").value==""){alert("ID不能为空,请重新输入!");event.returnValue...
  • SQLite是安卓内嵌的一个体积小,功能够用的数据库。不过不要过于依赖此数据库,因为会有一些个问题比较难以解决。代码如下:public class SQLiteActivity extends Activity { /** Called when the activity is ...
  • *mysql数据库增删改查操作。 */ header ("content-type:text/html;charset=utf-8" ); $ID = @ $_POST ['userId' ]; $name = @ $_POST ['userName' ]; $age = @ $_POST ['userAge' ]; $intro = @ $_...
  • } // 以下方法使用谷歌封装 API 调用实现对数据库增删改查 // 数据库添加 public void sql_add(View source) { try { // 创建数据库连接 SQLiteDatabase db = data_obj.getReadableDatabase(); // 建立模拟数据 ...
  • Step 1:效果图 Step 2目录结构: Step 3:AndroidManifest &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;manifest xmlns:android="...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 274
精华内容 109
关键字:

安卓数据库增删改查