
sqlite远程连接示例
Sqlite 是一个只有几百 k 大小的、 优秀的嵌入式数据库,本身不带有远程连接的功能。由于其身材小,速度快并且为众多的语言支持,所以在单机领域得到了广泛的使用。但由于天然不支持服务 / 客户端的模式,使其在遇到小型规模数据库远程连接的情况时不得不借助于附加的编程。
单位有三百多人,作为网管每天要接到很多电话,有很多一时无法想起对应的名字,翻查通讯录不仅速度慢而且容易漏过。为了方便起见,在 sqlite 上建立了一个通讯录数据表,然后用 perl 编写了一个查询脚本。效果不错的同时,也有同事希望可以得到一份拷贝。但是这时遇到一个问题,如何保证通讯录在不同人手中保持版本的统一性。最好的办法是建立一个服务 / 客户端的模式,在本机上维护一个数据库,而其它人通过连接数据库得到相关的查询结果。
具体的解决方法是这样的:在本机上维护一个到 sqlite 数据库的连接并建立一个来自于客户端的 socket 的监听,接受远程查询条件并回复查询结果;客户端志负责发送和接受这些最简单的任务。
客户端的代码:
use strictmy $in_buffer = undef
my $PF_INET = 2
my $port = 2345
my $remote_addr = pack('SnC4x8',$PF_INET,$port,192,168,138,228)
my $SOCK_DGRAM = 2
socket(UDP_CLIENT, $PF_INET, $SOCK_DGRAM, getprotobyname('udp'))
while(1){
print(" 输入名字或号码: ")
my $out_buffer=<STDIN>
chomp($out_buffer)
if($out_buffer eq "exit"){last}
send(UDP_CLIENT, $out_buffer, 0, $remote_addr)
print("waiting for reply...\n")
recv(UDP_CLIENT, $in_buffer, 100, 0)
chomp($in_buffer)
print("$in_buffer\n")
}
close(UDP_CLIENT)
服务器端的代码:
BEGIN{
if( $^O eq 'MSWin32' ){
require Win32::Console
Win32::Console::Free()
}
}
use strict
use DBI
#database parameters
my $db_path = 'd:/src/cc/phones.db'
my $dbh = DBI->connect("dbi:SQLite:$db_path", {PrintError => 0}) or die $DBI::errstr
my $sth = undef
#socket server parameters
my $in_buffer = undef
my $out_buffer = undef
my $PF_INET = 2
my $port = 2345
my $local_addr = pack('SnC4x8',$PF_INET,$port,192,168,138,228)
my $SOCK_DGRAM = 2
socket(UDP_SERVER, $PF_INET,$SOCK_DGRAM, getprotobyname('udp')) or die("$!")
bind(UDP_SERVER, $local_addr) or die("$!")
listen(UDP_SERVER, 10)
while(1){
#receive query then send result
last unless my $remote_addr = recv(UDP_SERVER,$in_buffer,100,0)
chomp($in_buffer)
if($in_buffer =~ /^[0-9]{6}$/){
$sth = $dbh->prepare("select * from phones where number = $in_buffer")
PROCEDURE:
$sth->execute()
my @items = $sth->fetchrow_array()
if(scalar(@items)){
$out_buffer = $items[0].' 的虚拟网号码是 '.$items[1]
}else{
$out_buffer = ' 查无此人 '
}
}else{
$sth = $dbh->prepare("select * from phones where name = '$in_buffer'")
goto PROCEDURE
}
send(UDP_SERVER,$out_buffer,0,$remote_addr)
}
#disconnect from sqlite
$dbh->disconnect()
1、首先下载安装好Navicat for MySQL。2、运行程序
3、连接远程数据库,点击“文件”,选择“创建连接”或者直接点连接这个图标。如下图
4、在新窗口填写所要连接管理的数据库的信息,可以“连接测试”,或直接“确定”。
登陆成功
5、连接数据后,打开数据库,才可进行更多 *** 作,如下图
6、备份数据库,一般是存为SQL文件,选中要备份的数据,右键,转存SQL文件或点,如图。
保存文件,然后等待完成就可以了。
7、导入数据库,最好是清空原来的数据库,然后选中需要导入数据库,右键,选择“运行SQL文件”,从本地磁盘查找备份的SQL文件。
8、编码可根据实际情况选定也可不特别的指明,软件会覆盖原来的,然后点击开始,导入数据。
分享一些navicat的使用心得,帮助那些入门的程序员们尽快的熟悉上这个软件。今天就先写navicat如何连接本地mysql数据库。
navicat如何连接mysql:
1、首先你电脑上必须安装了mysql的数据库。(如果你不清楚自己是否已经安装成功mysql,你可以在开始菜单输入“mysql”,进行搜索)
2、打开你的Navicat for Mysql (这里也可以使用上面的方法,在开始菜单搜索框中输入‘navicat’)
3、打开后单机工具栏左边第一个‘connection’,进入连接页面。
4、最重要的一步:打开的界面有五个框需要输入,第一个:connection Name 需要输入的是你新建的连接的的名字,这里我们就命名为‘本地’,第二个:
Host Name/Ip Address 你需要输入的是你本机的ip地址或者直接输入’localhost’,这里我们选择第二种。 第三个:Port ,输入你安装时候的端口号,一般为默认的3306;第四个和第五个分别为:UserName和Password,意思为你需要输入你数据库名用户名和密码,我的用户名是:root,密码:(保密,嘿嘿)。最后把下面那个‘Save Passwod’的小框框给勾上。
5、完成上面步骤,然后点击左下角有个‘test Connectiion’如果d出success,恭喜你直接点击右下角的‘save’按钮就可以了。如果d出error ,你则需要再重新仔细查看自己哪里填错了。
6、点击‘save’后,你就可以双击“本地”(这里的‘本地’是你刚才输入的connection Name),然后打开你的数据库了。
您好,很高兴为您解答:应该采用服务的形式暴露数据的 *** 作。
SQLite 只能通过读取文件的方式连接,是不能够远程访问的,但可以使用这种在服务器上执行的管理工具来管理: phpliteadmin。你可以通过在服务器上设置文件访问权限来限制通过 web 访问该文件,或者将数据库文件放在 web 站点外的目录。
如果我的回答没能帮助您,请继续追问。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)