问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

网站的数据库放在哪里,网站的程序又放在哪里?

发布网友 发布时间:2022-04-11 22:09

我来回答

2个回答

懂视网 时间:2022-04-12 02:30

打开strictMode后, db = new AliUserDBHelper(context).getReadableDatabase(); 这一行报错,大概就说StrictModeReadViolation 然后看到网上有人说这个读写还可能出现死锁的问题,等。 在getReadableDatabase方法的注释中说道:该操作是耗时的,不要放在主

打开strictMode后,

db = new AliUserDBHelper(context).getReadableDatabase(); 这一行报错,大概就说StrictModeReadViolation


然后看到网上有人说这个读写还可能出现死锁的问题,等。


在getReadableDatabase方法的注释中说道:该操作是耗时的,不要放在主线程里,也不要在ContentProvider的onCreate方法中调用。

{@link #getWritableDatabase}, this method may

* take a long time to return, so you should not call it from the

* application main thread, including from

* {@link android.content.ContentProvider#onCreate ContentProvider.onCreate()}.


那创建数据库的操作应该放在哪里呢?难到真是要开个线程,再传个handler给main/ui thread?


安卓sdk的demo有一个NotePad,就是在ContentProvider的onCreate方法中开的数据库

这个demo肯定是不行的,正确的做法如下:

简单讲,就是DBHelper的构造器只new自己,不要开数据库,不要调用getReadableDatabase的操作,

把getReadableDatabase的操作放在具体的insert,remove,delete等的方法体中,这些方法是可以异步调用的,而且往往应该异步调用


举个栗子

 **DataSQLHelper .class**

public class DataSQLHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "test.db";
private static final int DATABASE_VERSION = 1;

 public DataSQLHelper (Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}



@Override
public void onCreate(SQLiteDatabase db) {
 String sql = "create table " + TABLE + "( " + BaseColumns._ID
 + " integer primary key autoincrement, " + ID + " text, "
 + PASSWORD + " text, " + ACTIVE + " text, " + STATUS
 + " text);";
 db.execSQL(sql);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion >= newVersion)
 return;

String sql = null;
if (oldVersion == 1)
 sql = "alter table " + TABLE + " add note text;";
if (oldVersion == 2)
 sql = "";


if (sql != null)
 db.execSQL(sql);
}

 @Override
 public synchronized void close() {
   super.close();


 }

}


 // ***Test_Java .java***

 public class Test_Java extends Activity {
 DataSQLHelper helData;
SQLiteDatabase db;
Cursor cursor;


@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
 setContentView(R.layout.main);

 try { 

 helData= new DataSQLHelper(this);
 cursor = getData();
 startManagingCursor(cursor);

 setContentView(R.layout.view);


} catch (Exception ex) {

 }

 } // onCreate Ends


//因为这里只有一个方法,如果开多个方法的话,那么是不是要判断db是否为空,以及是否打开,在调用db = helData.getReadableDatabase()方法?
private Cursor getData() {
try {
 db = helData.getReadableDatabase();//这里是不是要if(db == null || db.isOpen() == false)
 cursor = db.query(DataSQLHelper.TABLE, null, null,
 null, null, null, null);
 startManagingCursor(cursor);
 return cursor;
} catch (Exception ex) {
 System.out.println("Exception Occured : " + ex.toString());
 return null;
}

}

//这里必须要关闭cursor,关闭db,关闭helper,否则报dbexception异常
@Override
protected void onDestroy() {
 System.out.println("onDestroy");
 super.onDestroy();
 if (db!=null){
   db.close();
  }
 if (cursor!=null){
   cursor.close();
 }

 if ( helData!=null){
 helData.close();
 }

}
}

热心网友 时间:2022-04-11 23:38

创建数据库

选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。

在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点

右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。

执行上述操作后,会弹出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作,

在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。

在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。

在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。

切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。

切换到【文件组】页,在这里可以添加或删除文件组。

完成以上操作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我用耳机玩爱唱久久怎么唱出来的不响? 电脑ktv点歌软件有哪些电脑用什么点歌软件比较好 更换变速箱油后,汽车刹车和起步时底盘常有嘎啦嘎啦的异响是什么原因... 格兰仕空调口碑怎么样 格兰仕空调的优缺点有哪些? 格兰仕空调怎么样?质量好吗? 什么是PNC金融服务集团 挖出蛇是好事还是坏事? 微信换行怎么换到下一行 微信如何将自己的位置定位发绐别人 数据库服务器 的作用是什么,怎么配置它啊? 网站上线时数据库部署在哪 如何部署 SQL 数据库 采用大型关系型数据库,能在windows\UNIX\Linux环境下部署的 电脑坏了?我XP停留在启动画面(就是上面微软大旗,下面一个进度条在爬动)? centos 7.0装完nv驱动,启动画面变蓝白进度条了,怎么改回默认的 win98如何改启动画面?怎样更改win98启动时有进度条时屏幕中间的字“microsotf windows 98” 电脑老卡在正在启动windows的进度条画面是硬盘坏了还是主板坏了? WinXP启动一直停留在进度条画面过不去 win7启动画面变成英文进度条,无法修改回来 win7 启动画面 怎么改成vista 进度条? windows 7系统启动画面变成了进度条怎么办? 我现在用VS 2005的MFC单文档程序做一个项目,需要载入大量的场景,需要在一开始做一个进度条。 网站用php制作了一个登录页面,然后用户登录后,进行数据库比对,找到相应用户后,怎么真实登录? sys用户默认登录了哪个数据库??? 已知Oracle数据库服务器名和IP,如何得到数据库名称 如何把已登录的用户的信息收集到数据库中 php 从数据库获取用户登录账号和密码,登录成功后进去主页面,点击个人信息,查看该 用户的所有信息 sqlplus / as sysdba如何判断登录了本地还是远程的数据库? 登录的用户名称及密码,保存到session中。在其他有用户限制的数据库信息或操作页面中读取用户名及密码并进 c#中新建的数据库应该放在哪里才能使应用程序访问的到? sqlserver上创建的数据库放在哪的 Android 中创建的数据库文件默认放在那里的 fm2012自建数据库应该放在什么地方?怎样选择自建数据库进入游戏? 数据库中union 和union all的区别 SQL语句中:UNION与UNION ALL的区别是什么? UNION和UNION ALL两者之间在性能上的区别 求助,关于数据库的更改及使用 开发中遇到的关于数据库历史版本设计的问题 数据库设计,庞大的交易信息如何存储,查询?交易信息表该如何设计? 请给个详细的建财务数据库的设计思路! 设计数据库的问题? 设计好的数据库该注意些什么? 用wordpress搭建在线学习平台靠谱吗 为什么我的电脑运行vs2010又卡又慢,求解决方法,是不是电脑内存太小了 装VMware虚拟机后,VS2010启动超慢 windows10要怎么样能让运行速度加快 为什么我用vc++6.0和vs2010编译同一段代码、运行速度天差地别 电脑速度很慢,怎样提高运行速度?执行你那个操作过后有什么后果? 有什么方法可以提高 电脑的运行速度