- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经为我的本地数据库尝试了 50 多次不同的连接字符串尝试,但似乎没有任何效果。我基本上只是试图打开数据库文件的连接,以便我可以转储我从 Excel 电子表格中提取的数据。我正在使用 Visual C# 制作离线 winform 应用程序。
无论我在我的 app.config 中尝试什么连接字符串,当它尝试将“dReader”写入数据库时它总是失败。
错误通常是这样的,这取决于我尝试的字符串:
“建立与 SQL Server 的连接时发生了与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)”
我查阅了许多在线示例和资源,但似乎没有一个有效。我希望这里有人可以指出失败的原因。
这是我的最新形式的 app.config:
<connectionStrings>
<add name="DDP_Project.Properties.Settings.DDP_DatabaseConnectionString"
connectionString="Data Source=E:\Other DDP Projects\DDP_Project_SDF\DDP_Project\DDP_Database.sdf;"
providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
这是我的表单代码:
private void Profiles_Click(object sender, EventArgs e)
{
profilesDialog.FileName = "[YOUR_UPLOAD_FILE_HERE]";
var result = profilesDialog.ShowDialog();
if (result == DialogResult.OK)
{
HandleFileSelection();
}
}
private void HandleFileSelection()
{
var file = profilesDialog.FileName;
// Create a connection to the file datafile.sdf in the program folder
string dbfile = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\DDP_Database.sdf";
SqlCeConnection connection = new SqlCeConnection("datasource=" + dbfile);
string strConnection = ConfigurationManager.ConnectionStrings["DDP_Project.Properties.Settings.DDP_DatabaseConnectionString"].ConnectionString;
//Create connection string to Excel work book
string excelConnectionString = string.Format(
@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=""{0}"";
Extended Properties=""Excel 8.0;HDR=YES;""", file
);
//Create Connection to Excel work book
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
OleDbCommand cmd = new OleDbCommand("SELECT [ID],[STATUS],[FAN_NUM],[PROFILE_NAME],[DESTINATION_HOST],[USER_ID],[USER_PASSWORD],[PROTOCOL],[PORT],[PATH],[CONTACT_NAME],[CONTACT_EMAIL],[CONTACT_PHONE],[CONTACT_ALT_PHONE],[CONTACT_CITY],[CONTACT_STATE],[CONTACT_CONTACT_TIME] FROM [Sheet1$]", excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
sqlBulk.DestinationTableName = "Profiles";
sqlBulk.ColumnMappings.Add("ID", "ID");
sqlBulk.ColumnMappings.Add("STATUS", "STATUS");
sqlBulk.ColumnMappings.Add("FAN_NUM", "FAN_NUM");
sqlBulk.ColumnMappings.Add("PROFILE_NAME", "PROFILE_NAME");
sqlBulk.ColumnMappings.Add("DESTINATION_HOST", "DESTINATION_HOST");
sqlBulk.ColumnMappings.Add("USER_ID", "USER_ID");
sqlBulk.ColumnMappings.Add("USER_PASSWORD", "USER_PASSWORD");
sqlBulk.ColumnMappings.Add("PROTOCOL", "PROTOCOL");
sqlBulk.ColumnMappings.Add("PORT", "PORT");
sqlBulk.ColumnMappings.Add("PATH", "PATH");
sqlBulk.ColumnMappings.Add("CONTACT_NAME", "CONTACT_NAME");
sqlBulk.ColumnMappings.Add("CONTACT_EMAIL", "CONTACT_EMAIL");
sqlBulk.ColumnMappings.Add("CONTACT_PHONE", "CONTACT_PHONE");
sqlBulk.ColumnMappings.Add("CONTACT_ALT_PHONE", "CONTACT_ALT_PHONE");
sqlBulk.ColumnMappings.Add("CONTACT_CITY", "CONTACT_CITY");
sqlBulk.ColumnMappings.Add("CONTACT_STATE", "CONTACT_STATE");
sqlBulk.ColumnMappings.Add("CONTACT_CONTACT_TIME", "CONTACT_CONTACT_TIME");
sqlBulk.WriteToServer(dReader);
sqlBulk.Close();
excelConnection.Close();
}
private void profilesDialog_FileOk(object sender, EventArgs e)
{
}
}
最佳答案
试试这个...
首先:
首先创建一个测试方法,您可以检查是否可以连接到 sqlce 数据库。
private void testconnection()
{
string strConnection = ConfigurationManager.ConnectionStrings["DDP_Project.Properties.Settings.DDP_DatabaseConnectionString"].ConnectionString;
using (var conn = new SqlCeConnection(string.Format("Data Source={0};Max Database Size=4091;Max Buffer Size = 1024;Default Lock Escalation =100;", strConnection)))
{
conn.Open();
try
{
//your Stuff
}
catch (SqlCeException)
{
throw;
}
finally
{
if (conn.State == ConnectionState.Open) conn.Close();
}
}
}
第二个:
只需将您的 excel 文件数据加载到数据表中并使用 foreach 然后将其保存在您的 sql ce 数据库文件中..
//Something like
//oledbcon
//oledb dataadapter
//datatable
// dapt.Fill(dt);
foreach(DataRow excel in dt.Rows)
{
ceCmd.Parameters.AddWithValue("ID",excel["ID"]);
ceCmd.ExecuteNonQuery();
}
问候
关于c# - 如何连接到 SDF 数据库?我尝试的连接字符串似乎没有用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5724469/
你好。 在过去的一个月里,我一直在从各种来源收集信息,但没有找到适合我的特定问题的想法。所以这里是问题的表述: 给定一个缓冲区几何形式的网格(顶点坐标和顶点索引的 32 位数组 + 附加数组,例如顶点
如何为 .sdf 数据库编写和运行升级脚本? sqlcmd 能做到吗?我不是要升级数据库文件的版本。我正在尝试升级其中的架构和数据。 最佳答案 重写 您可以使用 SQL Compact's TSQL
我想使用 SDFViewer 创建一个 sdf 文件,然后将其复制到独立存储,因为我不想在代码中手动添加数据。那可能吗?如果是的话我该怎么做?我需要在项目中添加为项目吗? 那我应该怎么修改呢? con
我正在尝试创建一个允许用户使用 .sdf 登录的应用程序,互联网上没有太多关于这方面的内容! 真的可以用一些指针来做。 这是我目前拥有的,但我认为它是一团乱麻,因为无论我在每个文本框中键入什么,它都会
我创建了一个新的 C# 项目并按照本教程中的步骤创建了一个 LocalDataCache: http://www.codeproject.com/KB/database/AdoSyncServices
我使用 VB.NET 开发了一个程序,运行 mysql (.mdf/.sdf) 数据库文件。它在我的开发机器上绝对运行良好。现在我已经编译并生成了 .exe 文件,希望它在没有 visual stud
我可以将 SDF 文件用作多个用户可以同时访问的小型网站的数据库吗?还是 SDF 仅适用于单个用户? 最佳答案 完全没问题! .SDF 是 SQL Server Compact数据库文件。 Like
我已经为 Windows 创建了一个应用程序,我在其中使用手机的 sqlite 作为数据库来存储数据。第一次在模拟器中测试应用程序时(即重新安装应用程序),每次都会删除数据库的数据。 所以任何人都可以
只是想知道关于这方面的一些实践; 我用本地数据库(SQL CE)(dB.sdf 文件)制作了一个简单的可视化 C# 程序。 假设用户删除了 dB.sdf 文件并尝试打开 exe 程序 - 没有任何反应
我在文件 C:\Users\Pawel\Documents\DB.sdf 中有数据库。我如何连接到它? 下面的简单代码不起作用并生成异常。 代码: [WebMethod] public String
我以前用 visual-studio 打开 sdf (sqlCE) 文件?或 sql 服务器?我真的不记得了。现在我无法打开这个 sdf 文件。需要用什么程序打开? 最佳答案 尝试 LINQPad ,
我有一个现有的应用程序,它使用 SQL Compact Mobile 3.5 和 SQL Merge 复制与使用 HTTP 的完整 SQL 数据库同步。 我可以在同一设备上同时运行另一个使用相同 db
当我尝试从 Eclipse 部署 Suitecloud 开发框架项目时,错误日志中出现以下错误: !MESSAGE The remote server returned an error: https
我开始使用数据库的 Sql Compact 版本,在开发过程中,数据库需要可通过网络访问。由于我无法找到无需复制即可通过网络共享 SDF 文件的方法,因此我需要将其导入 SQL Server 2008
当我尝试从 Eclipse 部署 Suitecloud 开发框架项目时,错误日志中出现以下错误: !MESSAGE The remote server returned an error: https
我正在寻找 R 中的正则表达式来提取 .sdf 化学数据文件中给定的字段。在这种情况下,字段由 分隔,并在一行的开头跟在“>”之后。例如。在这种情况下 string="> \nfield text
我正在尝试使用 Qt 打开 SQL Compact Server 文件 .sdf。我有以下代码: QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"
我的应用程序需要备份和恢复 .sdf 文件。整个应用程序只有一个数据集,表单上的一些 bindngSource 和表适配器使用相同的数据集。 为了测试,我尝试在运行时将 .sdf 复制到备份文件夹并返
如何使用“代码”创建新的 .mdf/.sdf 数据库? 我试过这个: http://support.microsoft.com/kb/307283 它所做的只是在 ConnectionString 上
在互联网上看了很多东西后,我还没有找到这两种文件类型之间的任何解释:.mdf 和 .sdf。 .sdf 我相信是 SQL Server (.mdf) 的精简版。它们看起来仍然完全不同。 已按照 msd
我是一名优秀的程序员,十分优秀!