我在将文本保存到SQL数据库时遇到问题,即save()方法。 这是我得到的错误信息。
类型' System.Data.SqlClient.SqlException'未处理的异常 发生在System.Data.dll
中其他信息:与网络相关或特定于实例的错误 在建立与SQL Server的连接时发生。服务器是 没找到或无法访问。验证实例名称是否为 正确并且SQL Server配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 错误定位 指定的服务器/实例)
继承我的代码,我想知道是什么问题。关于如何解决这个问题的任何建议?我将不胜感激!
public Form1()
{
InitializeComponent();
}
private void accountDetailsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.accountDetailsBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.database1DataSet);
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'database1DataSet.AccountDetails' table. You can move, or remove it, as needed.
this.accountDetailsTableAdapter.Fill(this.database1DataSet.AccountDetails);
}
private void nextButton_Click(object sender, EventArgs e)
{
Amount = decimal.Parse(amount_InvestedTextBox.Text);
WeekInterestRate = decimal.Parse(WeekIntTextBox.Text);
TwoWeekInterestRate = decimal.Parse(TWeekIntTextBox.Text);
MonthInterestRate = decimal.Parse(MonthIntTextBox.Text);
ThreeMonthInterestRate = decimal.Parse(ThreeMonthIntTextBox.Text);
Save();
Change();
}
private void Save()
{
SqlConnection cn = new SqlConnection(global::WindowsFormsApplication13.Properties.Settings.Default.Database1ConnectionString);
string sql = "INSERT INTO AccountDetails (Amount Invested) values('" + amount_InvestedTextBox + ")";
SqlCommand exesql = new SqlCommand(sql, cn);
cn.Open();
exesql.ExecuteNonQuery();
this.accountDetailsTableAdapter.Fill(this.database1DataSet.AccountDetails);
cn.Close();
}
private void Change()
{
Form2 f2 = new Form2();
f2.Show(this);
Hide();
}
配置文件
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="WindowsFormsApplication13.Properties.Settings.Database1ConnectionString"
connectionString="Data Source=|DataDirectory|\Database1.sdf"
providerName="Microsoft.SqlServerCe.Client.4.0" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
答案 0 :(得分:1)
为什么要创建SqlConnection?您有一个类型化的DataSet,因此与数据库的所有交互都应该通过表适配器进行。如果要将记录插入表中,请使用与该表对应的表适配器。
问题的直接原因是您使用的是仅适用于SQL Server的SqlConnection,其连接字符串适用于SQL Server CE。尽管名称,SQL Server和SQL Server CE是完全不同的,每个都有一个单独的ADO.NET提供程序。你根本不需要担心,因为正如我所说,你应该使用你的表适配器,它们包含所有的连接,数据适配器和命令对象。
答案 1 :(得分:0)
您的连接字符串存在问题。检查连接字符串中的服务器名称和实例名称。 Check here了解更多详情