Perl/C#连接Oracle/SQL Server和简单操作
连接数据库是一个很常见也很必须的操作。先将我用到的总结一下。
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和简单操作的更多相关文章
- Oracle,SQL Server 数据库较MySql数据库,Sql语句差异
原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...
- 介绍几种大型的Oracle/SQL Server数据库免费版
我们知道,Oracle和SQL Server等大型数据库也都存在一些免费的版本,这些免费的版本已经能够满足许多中小项目的需求.对于在校大学生来说,从学习的目标上来讲,安装免费版的大型数据库也就足够用了 ...
- Linux下安装SQL Server 2016(连接篇SQL Server on linux)
连接数据库 (1)设置防火墙 要连接数据库,首先要打开防火墙上1433端口,也就是,增加tcp端口1433到公共区域,并且永久生效. [root@localhost Desktop]# firewal ...
- Jmeter—8 连接microsoft sql server数据库取数据
本文以Jmeter 连接microsoft sql server为例. 1 从微软官网下载Microsoft SQL Server JDBC Driver 地址:http://www.microsof ...
- SQL Server里简单参数化的痛苦
在今天的文章里,我想谈下对于即席SQL语句(ad-hoc SQL statements),SQL Server使用的简单参数化(Simple Parameterization)的一些特性和副作用.首先 ...
- Jmeter入门8 连接microsoft sql server数据库取数据
本文以Jmeter 连接microsoft sql server为例. 1 从微软官网下载Microsoft SQL Server JDBC Driver 地址:http://www.microsof ...
- 1433端口无法连接(sql server 数据库无法访问问题)解决思路
登录远程SQL服务器一 看ping 服务器IP能否ping通. 这个实际上是看和远程sql server 2000服务器的物理连接是否存在.如果不行,请检查网络,查看配置,当然得确保远程sql ser ...
- mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?以及常用协议所对应的缺省端口号
mysql,oracle,sql server数据库默认的端口号? mysql:3306 Oracle:1521 sql server:1433 端口号可以为负吗? 不可以,端口号都有范围的,0~65 ...
- 无法打开到SQL Server的连接 (Microsoft SQL Server, 错误:53) .
标题: 连接到服务器 ------------------------------ 无法连接到 MSSQLSERVER. ------------------------------ 其他信息: 在与 ...
随机推荐
- [CF538H]Summer Dichotomy
[CF538H]Summer Dichotomy 题目大意: 将若干个学生分为两个班级\(S_1,S_2\),每个班的学生数分别为\(n_1,n_2\)(甚至可以没有学生,也可以没有老师).给出限 ...
- 5.3类集(java学习笔记)集合的输出
一.集合的输出 迭代输出:Iteratror接口 在输出集合时,最标准的方法是使用迭代器迭代输出. 1,List中的迭代器. Iterator中包含三个方法: hasNex()t判断集合内是否有元素存 ...
- Problem Q: 零起点学算法12——求2个日期之间的天数
#include<stdio.h> int main() { int a1,b1,c1,a2,b2,c2,s; scanf("%d-%d-%d",&a1,&am ...
- Scala实战高手****第13课:Scala模式匹配实战和Spark源码鉴赏
package com.dt.spark.scala.bascis class Dataframework case class Computerframework (name:String,popu ...
- 十面阿里 Java 程序员,最终拿下阿里 P6 offer!
转子:https://mp.weixin.qq.com/s/RkMxPbm8E99-rTZKmvBy6Q 今天介绍小编的一个朋友,他现今有四年开发经验了,前前后后为了进阿里面试十次(阿里旗下—蚂蚁金服 ...
- INLINE-BLOCK和FLOAT(二)(转)
一.一抹前言 没有爱的日子,时间如指尖细沙,不知不觉就流逝了.写“CSS float浮动的深入研究.详解及拓展(一)”和“CSS float浮动的深入研究.详解及拓展(二)”似乎就在不久前,然而相隔差 ...
- 从cmd连接mysql数据库控制台
在cmd中进入mysql安装目录的bin目录然后执行命令 mysql -uuser -ppassword database比如用户名为root,密码为mysql,数据库为test命令如下mysql - ...
- Linux下使用xargs将多行文本转换成一行并用tr实现逗号隔开
准备: cat test.txt 示例: cat test.txt | xargs 可以看出得到的字符串为空格隔开的. 再把上面的字符串用逗号隔开,可以使用tr命令进行空格的替换 cat test.t ...
- windbg学习—-.ecxr
.ecxr 命令定位当前异常的上下文信息,并显示指定记录中的重要寄存器 0:000> .ecxr eax=10000000 ebx=7ffd9000 ecx=77386500 edx=002 ...
- JavaEE学习路线图
http://www.cnblogs.com/gaoming7122/archive/2012/11/20/2778308.html