[英]C# to database (textboxes)
我想使用文本框将数据发送到数据库。
问题是他不知道loonberekening.tblWerknemer
,我总是
'tblWerknemer'附近的语法不正确
这是我的桌子的图片: http : //gyazo.com/1a92845f51f56ef37e9ae3adf3f23a7c
string database = (@"Data Source=(LocalDB)\v11.0;AttachDbFilename=E:\gip_stap_2\loonberekening.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注入) 尝试“插入到loonberekening.dbo.tblWerknemer”或仅“插入到tblWerknemer”,然后休息
尝试将查询重写insert into dbo.tblWerknemer ...
,因为loonberekening
是数据库名称,而dbo.tblWerknemer
是实际的表名称
另外,请尝试使用参数化查询而不是直接传递值来防止sql注入。
尝试这个:
string database = (@"Data Source=(LocalDB)\v11.0;AttachDbFilename=E:\gip_stap_2\loonberekening.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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.