简体   繁体   English

C#到数据库(文本框)

[英]C# to database (textboxes)

I want to use my textboxes to send data to my database. 我想使用文本框将数据发送到数据库。

The problem is that he doesn't know loonberekening.tblWerknemer , I always get 问题是他不知道loonberekening.tblWerknemer ,我总是

incorrect syntax near 'tblWerknemer' 'tblWerknemer'附近的语法不正确

Here is a picture of my tables: http://gyazo.com/1a92845f51f56ef37e9ae3adf3f23a7c 这是我的桌子的图片: 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);
}

Try "insert into loonberekening.dbo.tblWerknemer" 尝试"insert into loonberekening.dbo.tblWerknemer"

also as an aside look into parameterisation of the values. 另外,还可以查看值的参数化。

Either add ;InitialCatalog=loonberekening to the end of the connection string to specify the database or add a schema name to the query: loonberekening.dbo.tblWerknemer . 在连接字符串的末尾添加;InitialCatalog=loonberekening以指定数据库,或者向查询中添加模式名称: loonberekening.dbo.tblWerknemer

  • There will be nothing to read back from an insert as you appear to be attempting 您似乎正在尝试从插入内容中读取任何内容
  • You need to use an SQLCommand to prevent what will happen if you run your code with a ' anywhere in the textbox. 您需要使用SQLCommand来防止如果在文本框中'任何位置使用'运行代码,将会发生什么情况。 (SQL Injection) (SQL注入)

尝试“插入到loonberekening.dbo.tblWerknemer”或仅“插入到tblWerknemer”,然后休息

Try rewrite the query as insert into dbo.tblWerknemer ... , because loonberekening is the database name and dbo.tblWerknemer is the actual table name 尝试将查询重写insert into dbo.tblWerknemer ... ,因为loonberekening是数据库名称,而dbo.tblWerknemer是实际的表名称

Also try to use parametrized query instead of directly passing values to prevent sql injection. 另外,请尝试使用参数化查询而不是直接传递值来防止sql注入。

http://www.dreamincode.net/forums/topic/268104-parameterizing-your-sql-queries-the-right-way-to-query-a-database/ http://www.dreamincode.net/forums/topic/268104-parameterizing-your-sql-queries-the-right-way-to-query-a-database/

try this: 尝试这个:

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM