保存到数据库时抛出异常

时间:2014-03-27 03:20:30

标签: c# sql sql-server database

我在将文本保存到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>

2 个答案:

答案 0 :(得分:1)

为什么要创建SqlConnection?您有一个类型化的DataSet,因此与数据库的所有交互都应该通过表适配器进行。如果要将记录插入表中,请使用与该表对应的表适配器。

问题的直接原因是您使用的是仅适用于SQL Server的SqlConnection,其连接字符串适用于SQL Server CE。尽管名称,SQL Server和SQL Server CE是完全不同的,每个都有一个单独的ADO.NET提供程序。你根本不需要担心,因为正如我所说,你应该使用你的表适配器,它们包含所有的连接,数据适配器和命令对象。

答案 1 :(得分:0)

您的连接字符串存在问题。检查连接字符串中的服务器名称和实例名称。 Check here了解更多详情