C#sql INSERT INTO抛出异常System.Data.SqlClient.SqlException

时间:2015-12-02 02:53:59

标签: c# sql visual-studio

提前感谢您提供的任何帮助。我目前正在使用Visual Studio 2015构建一个程序,并且我正在尝试编写一个方法来执行我已经建立的INSERT INTO表。

当我运行我的代码时,我得到了

  

抛出异常:System.Data.dll中的“System.Data.SqlClient.SqlException”“

我的控制台中的

异常消息。我是SQL的新手,所以任何基本的原则和建议都将不胜感激!

private void InsertIntoAccount(int number, string type, string date)
{
    using (SqlConnection connection1 = new SqlConnection(connectionString))
    {
        //Establish a connection
        connection1.Open();
        string sqlstring = "INSERT INTO Account (AccountNumber, Type, DateOpened) VALUES (@number, @type, @date)";

        SqlCommand cmd = new SqlCommand(sqlstring, connection1);

        //Fill in parameters
        cmd.Parameters.Add("@number", SqlDbType.Int).Value = number;
        cmd.Parameters.Add("@type", SqlDbType.VarChar, 100).Value = type;
        cmd.Parameters.Add("@date", SqlDbType.VarChar, 100).Value = date;

        //Execute
        //<REMOVED> cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();
        connection1.Close();
    }   
}    

3 个答案:

答案 0 :(得分:1)

尝试

            cmd.CommandTimeout = 300;
            cmd.CommandType = CommandType.Text;

同样使用 DateOpened 字段,是varchar类型的字段,还是类型为date / datetime的字段

如果是date / datetime类型,请尝试将您的字符串转换为日期对象,然后将该行更改为

cmd.Parameters.Add("@date", SqlDbType.Date, 100).Value = date;

答案 1 :(得分:0)

确保您的数据库数据类型正确无误。您有一个日期字段,但您正在为数据类型为VARCHAR分配值。尝试将第3个参数声明更改为:

cmd.Parameters.Add("@date", SqlDbType.Date).Value = date;

答案 2 :(得分:0)

您的连接字符串值很可能不正确。该错误表示您使用连接字符串指定的DB中没有表import matplotlib.pyplot as plt import numpy as np np.random.seed(123456) import pandas as pd def align_labels(labels): for text in labels: x, y = text.get_position() h_align = 'left' if x > 0 else 'right' v_align = 'bottom' if y > 0 else 'top' text.set(ha=h_align, va=v_align) df = pd.DataFrame(3 * np.random.rand(4, 4), index=['a', 'b', 'c', 'd'], columns=['x', 'y','z','w']) plt.style.use('ggplot') colors = plt.rcParams['axes.color_cycle'] fig, axes = plt.subplots(nrows=2, ncols=2) for ax, col in zip(axes.flat, df.columns): artists = ax.pie(df[col], autopct='%.2f', pctdistance=1.05, colors=colors) ax.set(ylabel='', title=col, aspect='equal') align_labels(artists[-1]) fig.legend(artists[0], df.index, loc='center') plt.show()

在您的示例中,您将字符串值作为连接字符串传递,假设您已在代码中的某处定义它。

连接字符串:

Account

密码= MYPASSWORD;

示例:

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;

交叉检查此变量。初始目录应该是数据库名称。

更好的方法是从connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=test; Integrated Security=True;" 读取连接字符串。

web.config