如何在没有SQL Server的环境下,运行需要数据库支持的C#程序?

本地开发了一款应用,需要连接本地的SQL数据库类似于工资管理系统之类的常见系统求教:如何在其它没有SQLServer的环境下,运行该程序?在使用VS2012生成安装包时,... 本地开发了一款应用,需要连接本地的SQL数据库
类似于工资管理系统之类的常见系统
求教:
如何在其它没有SQL Server的环境下,运行该程序?
在使用VS2012生成安装包时,能否包含该数据库?

或者提供其它方案(比如使用access数据库的具体案例)
请举出具体的解决方案(有实例更好)
展开
 我来答
biocommando
2014-03-03 · TA获得超过4867个赞
知道大有可为答主
回答量:2395
采纳率:0%
帮助的人:1362万
展开全部
C#生成安装文件后自动附加数据库的思路跟算法
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
using System.ServiceProcess;

namespace AdminZJC.DataBaseControl
{
/// <summary>
/// 数据库操作控制类
/// </summary>
public class DataBaseControl
{
/// <summary>
/// 数据库连接字符串
/// </summary>
public string ConnectionString;

/// <summary>
/// SQL操作语句/存储过程
/// </summary>
public string StrSQL;

/// <summary>
/// 实例化一个数据库连接对象
/// </summary>
private SqlConnection Conn;

/// <summary>
/// 实例化一个新的数据库操作对象Comm
/// </summary>
private SqlCommand Comm;

/// <summary>
/// 要操作的数据库名称
/// </summary>
public string DataBaseName;

/// <summary>
/// 数据库文件完整地址
/// </summary>
public string DataBase_MDF;

/// <summary>
/// 数据库日志文件完整地址
/// </summary>
public string DataBase_LDF;

/// <summary>
/// 备份文件名
/// </summary>
public string DataBaseOfBackupName;

/// <summary>
/// 备份文件路径
/// </summary>
public string DataBaseOfBackupPath;

/// <summary>
/// 执行创建/修改数据库和表的操作
/// </summary>
public void DataBaseAndTableControl()
{
try
{
Conn = new SqlConnection(ConnectionString);
Conn.Open();

Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = StrSQL;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();

MessageBox.Show("数据库操作成功!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
Conn.Close();
}
}

/// <summary>
/// 附加数据库
/// </summary>
public void AddDataBase()
{
try
{
Conn = new SqlConnection(ConnectionString);
Conn.Open();

Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = "sp_attach_db";

Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"filename1", SqlDbType.NVarChar));
Comm.Parameters[@"filename1"].Value = DataBase_MDF;
Comm.Parameters.Add(new SqlParameter(@"filename2", SqlDbType.NVarChar));
Comm.Parameters[@"filename2"].Value = DataBase_LDF;

Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();

MessageBox.Show("附加数据库成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
Conn.Close();
}
}

/// <summary>
/// 分离数据库
/// </summary>
public void DeleteDataBase()
{
try
{
Conn = new SqlConnection(ConnectionString);
Conn.Open();

Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = @"sp_detach_db";

Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;

Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();

MessageBox.Show("分离数据库成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
Conn.Close();
}
}

/// <summary>
/// 备份数据库
/// </summary>
public void BackupDataBase()
{
try
{
Conn = new SqlConnection(ConnectionString);
Conn.Open();

Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = "use master;backup database @dbname to disk = @backupname;";

Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"backupname", SqlDbType.NVarChar));
Comm.Parameters[@"backupname"].Value = @DataBaseOfBackupPath + @DataBaseOfBackupName;

Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();

MessageBox.Show("备份数据库成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
Conn.Close();
}
}

/// <summary>
/// 还原数据库
/// </summary>
public void ReplaceDataBase()
{
try
{
string BackupFile = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Conn = new SqlConnection(ConnectionString);
Conn.Open();

Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = "use master;restore database @DataBaseName From disk = @BackupFile with replace;";

Comm.Parameters.Add(new SqlParameter(@"DataBaseName", SqlDbType.NVarChar));
Comm.Parameters[@"DataBaseName"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"BackupFile", SqlDbType.NVarChar));
Comm.Parameters[@"BackupFile"].Value = BackupFile;

Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();

MessageBox.Show("还原数据库成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
Conn.Close();
}
}
}
}

/*
///调用事例:

   还原数据库
private void button0_Click(object sender, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MyDatabase";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:\Program Files\Microsoft SQL Server\MSSQL\Data\";
DBC.ReplaceDataBase();
}

    附加数据库
private void button1_Click_1(object sender, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MyDatabase";
DBC.DataBase_MDF = @"D:\Program Files\Microsoft SQL Server\MSSQL\Data\MyDatabase_Data.MDF";
DBC.DataBase_LDF = @"D:\Program Files\Microsoft SQL Server\MSSQL\Data\MyDatabase_Log.LDF";
DBC.AddDataBase();
}

    备份数据库
private void button2_Click(object sender, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MyDatabase";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:\Program Files\Microsoft SQL Server\MSSQL\Data\";
DBC.BackupDataBase();
}

    分离数据库
private void button3_Click(object sender, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MyDatabase";
DBC.DeleteDataBase();
}
百度网友de8799fee
推荐于2017-09-20 · TA获得超过140个赞
知道小有建树答主
回答量:360
采纳率:50%
帮助的人:86.2万
展开全部
没有SQL Server的环境,客户端连服务器数据库只要安装一个ADO驱动就行了,你可以去搜下mdac_typ.exe,安装这个就行了。
访问Access数据库都是本地的,只要装Office的Access就行了。
更多追问追答
追问
能否详细说下
只是一个毕设的应用 数据库中数据不多
我的想法是把数据库文件也捆绑到安装包里去,能否在安装过程中安装好SQL环境
但是看起来实现不简单

或者说如果使用access数据库,如何将access数据库整合到安装包里?
请提供具体调用access数据库的实例,感谢!
追答
1、SQL Server:网上下载mdac_typ.exe,直接打包到你的安装包里面去,安装包安装时直接安装这个exe就行了,至于数据库和表你可以通过程序去生成。
2、至于Access就更简单了,把你Access数据库直接打包到你的安装包里,用相对路径直接连接到本地安装目录下就ok了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lokily2010
2014-03-03 · TA获得超过284个赞
知道小有建树答主
回答量:776
采纳率:100%
帮助的人:577万
展开全部
推荐采用SQLite作为数据库,就一个数据库文件而已,其他的和SqlServer用法类似,只是用SQLiteConnection ,SQLiteCommand ,SQLiteDataReader 等等即可,一样的使用DataSet等,如果你抽象出你代码中的DAL层,更换个数据库,代价很小的
追问
能否提供具体范例? 链接也可以

我没有使用过SQL Server以外的数据库
我想实现的是将数据库捆绑在安装包内
任何用户使用时都读取本地的数据库就可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
美味时光旅人
2020-02-12 · TA获得超过3773个赞
知道小有建树答主
回答量:3137
采纳率:31%
帮助的人:210万
展开全部
没SQL
Server环境客户端连服务器数据库要安装ADO驱行搜mdac_typ.exe安装行
访问Access数据库都本要装OfficeAccess行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_请开始你的表演
2014-03-03 · 超过71用户采纳过TA的回答
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:173万
展开全部
本地没有就不连本地的就完了呗。。直接连网络服务器的数据库不就好了么。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式