[英]Exception unhandled SQL INTO
我目前正在创建一个登录和退出表单,并且正在尝试使登录部分起作用,这会将文本框中的数据从 ac# 表单链接到 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
}
}
}
请帮忙,先谢谢汤姆
如果我只需要使用 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
}
}
}
使用ADONETHelper (我写的一个项目,你可以从 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 管道。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.