C# 异常未处理到SQL中

C# 异常未处理到SQL中,c#,sql,C#,Sql,我目前正在创建一个登录和退出表单,并试图使登录部分正常工作。这将把文本框中的数据从c#表单链接到SQL数据库 我的问题是:这个系统的语法错误是什么 我目前收到的信息是: System.Data.SqlClient.SqlException:“关键字“INTO”附近的语法不正确。” 我的代码是: private void AcceptData() { using (Connection = new SqlConnection(connectionString))

我目前正在创建一个登录和退出表单,并试图使登录部分正常工作。这将把文本框中的数据从c#表单链接到SQL数据库

我的问题是:这个系统的语法错误是什么

我目前收到的信息是:

System.Data.SqlClient.SqlException:“关键字“INTO”附近的语法不正确。”

我的代码是:

 private void AcceptData()
    {
        using (Connection = new SqlConnection(connectionString))
        {
            Connection.Open();

            using (SqlDataAdapter adapter = new SqlDataAdapter("INPUT INTO Person", Connection))//this is currently where it says the error is
            {
                DataTable RegisterTable = new DataTable();
                adapter.Fill(RegisterTable); //System.InvalidOperationException: 'The ConnectionString property has not been initialized.' TO FIX

                string name = textBox1.Text;
                string organisation = textBox3.Text;
                DateTime Time = DateTime.Parse(textBox2.Text);
                string strDateTimeIn = Time.ToString("yyyy-MM-dd HH:mm:ss.ffff");
                string query = "INSERT INTO Person (Name,Organisation,TimeIn) VALUES('" + name + "','" + organisation + "','" + strDateTimeIn + "')";
                SqlCommand SignIn = new SqlCommand(query, Connection);
                SignIn.ExecuteNonQuery(); // this should be fine currently

            }
        }

    }
请帮助,提前谢谢Tom

如果我只需要使用ADO.Net,我会(几乎)这样写:

DateTime timeIn;
// I would rather use TryParseExact, I just don't know what format you expect...
if(DateTime.TryParse(textBox2.Text, out timeIn)) 
{
    using (var Connection = new SqlConnection(connectionString))
    {
        string query = "INSERT INTO Person (Name,Organisation,TimeIn) VALUES(@Name, @Organisation, @TimeIn)";
        using(var SignIn = new SqlCommand(query, Connection))
        {
            SignIn.Parameters.Add("@Name", SqlDbType.NVarChar).Value = textBox1.Text;
            SignIn.Parameters.Add("@Organisation", SqlDbType.NVarChar).Value = textBox3.Text;
            SignIn.Parameters.Add("@TimeIn", SqlDbType.DateTime).Value = timeIn;
            Connection.Open();
            SignIn.ExecuteNonQuery(); // this should be fine currently
        }
    }
}
有了(我写的一个项目,你可以从GitHub下载)我会这样做:

DateTime timeIn;
// Still prefer to use TryParseExact....
if(DateTime.TryParse(textBox2.Text, out timeIn))
{
    var query = "INSERT INTO Person (Name,Organisation,TimeIn) VALUES(@Name, @Organisation, @TimeIn)";
    var parameters = new IDbDataParameter[]
    {
        _DB.CreateParameter("@Name", ADONETType.NVarChar, textBox1.Text),
        _DB.CreateParameter("@Organisation", ADONETType.NVarChar, textBox3.Text),
        _DB.CreateParameter("@TimeIn", ADONETType.DateTime, timeIn)
    };
    _DB.ExecuteNonQuery(query, CommandType.Text, parameters);
}

在本例中,它只为您保存4行代码,但通常单个项目包含对数据库的许多调用—选择、添加、编辑和删除记录。此时您将看到ADONETHelper的贡献—它可以避免大量代码重复,并为您封装大多数ADO.Net管道。

也应该是“插入”而不是“输入”,如果您使用数据适配器并在构造函数中提供查询,那么您不应该需要指定额外的“查询”。另外,
SqlDataAdapter
接受select命令。@Terrance干杯,我现在就这么做,谢谢pal@Terrance我现在得到System.Data.SqlClient.SqlException:“Person”附近的语法不正确。“有帮助吗?@WMTS您的sql语句不完整。如果插入,可能只需要一个sql命令。检查此示例并使其适应您的SqlCommand。