(SQL配置管理器中,把通信协议TCP/IP相关的服务都启用
在SQL中,安全性---登陆账号---SA的属性---状态—启用授权登陆和允许访问SQLSERVER引擎 )
以上设备和配置保证模仿远程用户来我这个计算机SQLSEVER服务器访问数据库.
二 载入系统的类包/名字空间
using System.Data
using System.Data.SqlClient
三 建立连接对象sqlconnection 专门负责与数据库服务器连接
四 定义一个sqldatareader对象,专门从数据库指定表中读出数据
五 定义一个SQL查询命令对象 sqlcommand ,让它负责从数据库去 *** 作读,并把读到结果数据交给sqldatareader对象
protected void Button1_Click(object sender, EventArgs e)
{
String mys = "xxxxdatabase= xxxxUser ID=xxxpwd=xxxxTrusted_Connection=no" //连接串
SqlConnection myc = new SqlConnection(mys)//定义一个连接对象myc,负责去连接mys串定义的服务器和数据库
myc.Open()
Response.Write("连接成功")
//准备读出数据
SqlDataReader myread
string sql="查询语句"
SqlCommand mycom = new SqlCommand(sql , myc)
//定义mycom,在myc这个数据连接中去执行指定的select查询命令
myread = mycom.ExecuteReader()//把mycom的执行查询的结果数据交给myread
while (myread.Read()) //遍历表中的所有行,read( )一次,可读一行,往下跳
{
//从查询结果中取一行出来
for (int i = 0i <myread.FieldCount i++)
Response.Write(myread[i].ToString())
Response.Write("<br>")
}
myc.Close()
}
在SqlServer中存储、读写Word文件,需要将指定表字段添加为Image类型,示例表结构为:
1
CREATE
TABLE
CONTRACTS
(
2
ID
VARCHAR
(50),
3
CONTRACT_FILE
IMAGE
4
)
CONTRACT_FILE字段就是要存储Word文件的字段,在存储前,有一个小插曲,你需要将Word文件转换为byte数组,可参考以下代码实现:
1
//将文件转换为byte数组
2
public
static
byte[]
File2Bytes(string
fileName)
3
{
4
FileStream
fs
=
new
FileStream(fileName,FileMode.OpenOrCreate,
FileAccess.Read)
5
byte[]
fileDatas
=
new
byte[fs.Length]
6
fs.Read(fileDatas,
0,
System.Convert.ToInt32(fs.Length))
7
fs.Close()
8
return
fileDatas
9
}
接下来就是将转换后的byte[]数组存储到SqlServer的对应字段中,具体实现代码可看如下代码段:
01
//将文件存储到数据库
02
public
bool
UpdateContractFile(string
id,
byte[]
fileBytes)
03
{
04
string
sql
=
"UPDATE
CONTRACTS
SET
CONTRACT_FILE=@CONTRACT_FILE
WHERE
ID=@ID"
05
using
(SqlConnection
conn
=
new
SqlConnection(this.m_DataAccess.ConnectString))
06
{
07
conn.Open()
08
using
(SqlCommand
cmd
=
new
SqlCommand())
09
{
10
cmd.Connection
=
conn
11
cmd.CommandText
=
sql
12
cmd.Parameters.Clear()
13
cmd.Parameters.Add(new
SqlParameter("@CONTRACT_FILE",
SqlDbType.Image))
14
cmd.Parameters["@CONTRACT_FILE"].Value
=
fileBytes
15
cmd.Parameters.Add(new
SqlParameter("@ID",
SqlDbType.VarChar))
16
cmd.Parameters["@ID"].Value
=
id
17
return
cmd.ExecuteNonQuery()
>
0
?
true
:
false
18
}
19
}
20
}
同时,因之前转换了数据类型,所以从数据库中读取Word文件时,要先将Image类型的字段转换为bytes[],代码如下:
01
//通过ID获取文件byte数组
02
public
byte[]
GetContractFile(string
id)
03
{
04
string
sql
=
"SELECT
CONTRACT_FILE
FROM
CONTRACTS
WHERE
ID='{0}'"
05
sql
=
string.Format(sql,
id)
06
object
contractFile
07
contractFile
=
this.m_DataAccess.ExecuteScalar(sql)
08
if
(contractFile
==
null)
09
{
10
return
new
byte[0]
11
}
12
else
13
{
14
return
(byte[])contractFile
15
}
16
}
在获取到文件的byte[]后,将该文件再通过文件流存储为Word文件,以下代码可实现此功能:
01
//将byte[]数组存储为Word文件
02
byte[]
fileBytes
=
this.m_ContractsBusiness.GetContractFile(id)
03
if
(fileBytes.Length
==
0)
04
{
05
XMessageBox.ShowError("未找到合同文件!")
06
return
07
}
08
SaveFileDialog
sfd
=
new
SaveFileDialog()
09
sfd.Filter
=
"Word文件(*.doc)|*.doc"
10
if
(sfd.ShowDialog()
==
System.Windows.Forms.DialogResult.OK)
11
{
12
try
13
{
14
string
saveFileName
=
sfd.FileName
15
int
arraysize
=
new
int()
16
arraysize
=
fileBytes.GetUpperBound(0)
17
FileStream
fs
=
new
FileStream(saveFileName,
FileMode.OpenOrCreate,
FileAccess.Write)
18
fs.Write(fileBytes,
0,
arraysize)
19
fs.Close()
20
if
(XMessageBox.ShowQuestion("文件存储成功,是否立即打开文件?")
==
21
System.Windows.Forms.DialogResult.Yes)
22
{
23
Process.Start(saveFileName)
24
}
25
}
26
catch
(Exception
ex)
27
{
28
XMessageBox.ShowError(" *** 作失败!")
29
}
上面的几段代码只是核心代码,并不是完整的代码段,用时候要看清,自己再修改下。
MS SQL Server 2005 及其后版本 可直接指定 数据写向哪个 “数据库” 。
示例,先在MS SQL Server中手动建立一个数据库“TESTDB”
然后在任一数据库查询状态运行下面语句:
SELECT 'ABC' AS TESTF1INTO TESTDB.DBO.TESTTB1 //插入到TESTDB数据库中的dbo架构下去,作为TESTTB1表。
请参考理解上面语句,就明白怎么做了。
如果是不同实例之间,甚至不同的计算机之间,那么,一般做不到,也不建议。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)