连接数据库是一个很常见也很必须的操作。先将我用到的总结一下。

1. Perl 连接数据库

Perl 连接数据库的思路都是:

1)使用DBI模块; 2)创建数据库连接句柄dbh; 3)利用dbh创建语句句柄sth; 4)利用sth执行sql语句; 5)利用sth处理数据。

连接Oracle:

    my $dbh=DBI->connect("DBI:Oracle:host=$hostname;sid=$sid",$username,$passwd);  

    ### deal with multi return value
my $sql=qq(select uid_der from wbphish_usr_der);
$sth->execute();
my $sth=$dbh->prepare($sql);
$sth->execute() or die;
my @uid;
while(my @row=$sth->fetchrow_array)
{ push @uid,$row[];} ### deal with single return value
my $sql="SELECT max(DEMO) FROM phishing"
$sth->execute();
my $sth=$dbh->prepare($sql);
$sth->execute() or die;
my $id=$dbh->selectrow_array($sql);

其中host是数据库server的ip地址,sid为连接的数据库。

连接SQL Server:

    my $dbh = DBI->connect("dbi:ODBC:driver={SQL Server};Server=127.0.0.1;Database=$dbs;UID=$uid;PWD=$pwd");
my $sth = $dbh->prepare($sql);
$sth->execute();

其中Server是server的ip地址,这里是local地址,Database为连接的数据库。

2. C# 连接数据库

C# 连接数据库的思路是:

1)连接给定参数建立连接对象; 2)利用连接对象建立SQL语句对象; 3)利用SQL语句对象执行并处理数据。

连接SQL Server:

    namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
/*Create Connection*/
//connection-string(Local Server:127.0.0.1) & SQL-string define
string conString = "Server=(local); database=test; uid=sa; password=123456";
string sqlString = "select top 10 " + metricName + ",MetricTime from Metric where MetricTime > @metricTime order by MetricTime";
//create a connection
SqlConnection con = new SqlConnection(conString);
con.Open(); /*First way*/
//create a SQL command within connection, use SqlDataReader(light-level) to read retrieved data
SqlCommand cmd = new SqlCommand(sqlString, con);
SqlParameter[] sps = new SqlParameter[] { new SqlParameter("@metricTime", metricTime) }; //Use SqlParameter to avoid "SQL injection".
cmd.Parameters.AddRange(sps);
SqlDataReader sdr = cmd.ExecuteReader();
//Read data from DataReader
while (sdr.Read())
Console.WriteLine((double)sdr[metricName]); con.Close();
cmd.Dispose(); /*Second way*/
//create a SQL command within connection, use SqlDataAdapter to read retrieved data
SqlDataAdapter sqlDad = new SqlDataAdapter(sqlString, sqlCon);
SqlParameter sqlPar = new SqlParameter("@metricTime", metricTime); //Use SqlParameter to avoid "SQL injection".
sqlDad.SelectCommand.Parameters.Add(sqlPar);
DataSet metricDS = new DataSet("MetricDS");
sqlDad.Fill(metricDS, "Metric");
//Read data from DataSet
foreach (DataRow row in dst.Tables["Monitor"].Rows)
Console.WriteLine(row["ID"] + "\t" + row["RecordTime"] + "\t" + row["VideoView"] + "\t" + row["Fluency"]); sqlCon.Close();
}
}
}

其中连接字串中Server是数据库server的ip地址,database是指定连接的数据库。

代码首先建立连接,然后分别以SqlDataReader和SqlDataAdapter两种方式处理了数据,且利用了SqlParameter来避免SQL injection。

以上看来,连接数据库的时候,你得告诉程序:

1)我去连接哪个数据库server呀,2)我连到server了,我去连哪个数据库呀?不然我的sql语句找不到table么。 3)连接之后,我可以有多种方式取得数据

Perl/C#连接Oracle/SQL Server和简单操作的更多相关文章

  1. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  2. 介绍几种大型的Oracle/SQL Server数据库免费版

    我们知道,Oracle和SQL Server等大型数据库也都存在一些免费的版本,这些免费的版本已经能够满足许多中小项目的需求.对于在校大学生来说,从学习的目标上来讲,安装免费版的大型数据库也就足够用了 ...

  3. Linux下安装SQL Server 2016(连接篇SQL Server on linux)

    连接数据库 (1)设置防火墙 要连接数据库,首先要打开防火墙上1433端口,也就是,增加tcp端口1433到公共区域,并且永久生效. [root@localhost Desktop]# firewal ...

  4. Jmeter—8 连接microsoft sql server数据库取数据

    本文以Jmeter 连接microsoft sql server为例. 1 从微软官网下载Microsoft SQL Server JDBC Driver 地址:http://www.microsof ...

  5. SQL Server里简单参数化的痛苦

    在今天的文章里,我想谈下对于即席SQL语句(ad-hoc SQL statements),SQL Server使用的简单参数化(Simple Parameterization)的一些特性和副作用.首先 ...

  6. Jmeter入门8 连接microsoft sql server数据库取数据

    本文以Jmeter 连接microsoft sql server为例. 1 从微软官网下载Microsoft SQL Server JDBC Driver 地址:http://www.microsof ...

  7. 1433端口无法连接(sql server 数据库无法访问问题)解决思路

    登录远程SQL服务器一 看ping 服务器IP能否ping通. 这个实际上是看和远程sql server 2000服务器的物理连接是否存在.如果不行,请检查网络,查看配置,当然得确保远程sql ser ...

  8. mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?以及常用协议所对应的缺省端口号

    mysql,oracle,sql server数据库默认的端口号? mysql:3306 Oracle:1521 sql server:1433 端口号可以为负吗? 不可以,端口号都有范围的,0~65 ...

  9. 无法打开到SQL Server的连接 (Microsoft SQL Server, 错误:53) .

    标题: 连接到服务器 ------------------------------ 无法连接到 MSSQLSERVER. ------------------------------ 其他信息: 在与 ...

随机推荐

  1. iOS 取消警告

    第一步找到要取消的警告类型 在相应的警告上右击->Reveal in Log 被选中的-Wdeprecated-declarations就是我们所要的警告类型了. -W是前缀,这个前缀表示的是 ...

  2. 搭建SSH框架–搭建篇

    工具: IDE:My Eclipse 2015 数据库:Orcale 创建Web项目 1.1 名称:PersonalWeb 1.2 勾选创建web.xml 1.3 Finsh 搭建Spring框架 2 ...

  3. fidder模拟post提交到PHP遇到的问题

    http头必须带上Content-type: application/x-www-form-urlencoded  之后 ,php 才能接收到post数据 1. 用php://input可以很便捷的取 ...

  4. Delphi 使窗体Showmodal后可以操作其他窗体

    对话框ShowModal之后不能操作其它窗口,实际上是因为Windows Disable了其它窗口.所以当你需要在模态对话框中访问其它已经可见的窗口时,需要用EnableWindow API来激活对应 ...

  5. 【sql】sql优化

    sql优化: 1.最左前缀原则 如果contact表上的tenement_id列创建了索引,那么查询的时候将索引列放在最左边,查询的速度会快很多,因为扫描的范围是索引范围而不是整张表范围!! SELE ...

  6. What's New In DevTools (Chrome 59)来看看最新Chrome 59的开发者工具又有哪些新功能

    原文:https://developers.google.com/web/updates/2017/04/devtools-release-notes#command-menu 参考:https:// ...

  7. Delphi 7下最小化到系统托盘

    在Delphi 7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本.定义如下: 123456789   _NOTIFY ...

  8. centos7 系统管理systemd学习记录

    在centos7之前,系统服务是service,chkconfig等命令来管理的.到了centos7,统一使用systemctl来管理系统服务 其实就是把chkconfig和service结合在一起了 ...

  9. python合并多个csv文件并去重

    #coding=utf-8 import os import pandas as pd import glob def hebing(): csv_list = glob.glob('*.csv') ...

  10. HDU 1560 IDA*搜索

    用N个串中找到最短的公共串(不要求连续,仅仅要相对位置一样就可以) 迭代加深搜索就可以 剪枝:当前的深度+最少还有加深的深度是否大于限制的长度,若是,则退回. #include "stdio ...