我想使用我的文本框将数据发送到我的数据库。
问题是他不懂loonberekening.tblWerknemer
,我总是得到
'tblWerknemer' 附近的语法不正确
这是我的桌子的图片: http://gyazo.com/1a92845f51f56ef37e9ae3adf3f23a7c
string database = (@"Data Source=(LocalDB)v11.0;AttachDbFilename=E:gip_stap_2loonberekening.mdf;Integrated Security=True;Connect Timeout=30");
string werknemergegevens = "insert into loonberekening.tblWerknemer (naam,voornaam) values ('"+txtNaam.Text+"','"+txtVoornaam.Text+"');";
SqlConnection cnnLoonberekening = new SqlConnection(database);
SqlCommand scmdLoon = new SqlCommand(werknemergegevens, cnnLoonberekening);
SqlDataReader check;
try{
cnnLoonberekening.Open();
check = scmdLoon.ExecuteReader();
MessageBox.Show("Opgeslagen");
while (check.Read())
{
}
}catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
尝试"insert into loonberekening.dbo.tblWerknemer"
此外,还可以对值的参数化进行研究。
将;InitialCatalog=loonberekening
添加到连接字符串的末尾以指定数据库,或者向查询添加架构名称:loonberekening.dbo.tblWerknemer
。
- 当您似乎正在尝试时,不会有任何内容可以从插入中读回
- 您需要使用
SQLCommand
来防止在文本框中的任何位置使用'
运行代码时发生的情况。(SQL注入)
尝试"insert into loonberekening.dbo.tblWerknemer"或只有"插入到tblWerknemer"然后休息部分
尝试将查询重写为 insert into dbo.tblWerknemer ...
,因为loonberekening
是数据库名称,dbo.tblWerknemer
是实际的表名
此外,请尝试使用参数化查询,而不是直接传递值以防止 sql 注入。
http://www.dreamincode.net/forums/topic/268104-parameterizing-your-sql-queries-the-right-way-to-query-a-database/
试试这个:
string database = (@"Data Source=(LocalDB)v11.0;AttachDbFilename=E:gip_stap_2loonberekening.mdf;Integrated Security=True;Connect Timeout=30");
string werknemergegevens = "insert into tblWerknemer (naam,voornaam) values (@Naam,@Voornaam)";
using(SqlConnection cnnLoonberekening = new SqlConnection(database))
{
SqlCommand scmdLoon = new SqlCommand(werknemergegevens, cnnLoonberekening);
scmdLoon.Parameters.Add("@Naam",SqlDbType.VarChar).Value=txtNaam.Text;
scmdLoon.Parameters.Add("@Voornaam",SqlDbType.VarChar).Value=txtVoornam.Text;
scmdLoon.ExecuteNonQuery();
}