|
..then I suggest you learn very quickly, as it is part of the code you are converting.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Can you give me link for learning database ?
|
|
|
|
|
Google[^] has a list; but skip the ones that use a wizard to generate the code.
As is, the VB code you posted would load an entire table and then pick a random record from that list. It would have been more efficient to generate a random id and fetch a single record.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
How to convert Access Database to SQL Database ?
|
|
|
|
|
There's a button if you open the database in Access in edit-mode , that size "upsize to SQL". It will only convert tables, not forms or reports.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I cannot find that option!!!
|
|
|
|
|
|
I think I am using developer version!
|
|
|
|
|
I read that there is no anymore that option,now for conversion is using SQL Server Migration Assistant for Access.
|
|
|
|
|
Pavlex4 wrote: I read that there is no anymore that option,now for conversion is using SQL Server Migration Assistant for Access. It was there in 2007. Good to hear that there is a new option; did it work?
Alternatively, you could also create a "linked server" in SQL Management Studio, point to your Access-database, and copy tables over using a "SELECT INTO".
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
When I run program with this commands it prints System.Data.SqlClient.SqlCommand!!!Why it won't show random word from database???
string cs= @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename= C:\Users\Pavle\Documents\Visual Studio 2015\Projects\Test slagalica\Test slagalica\Slagalica-DB.mdf;Integrated Security=True";
string queryString = "SELECT * FROM table1 WHERE LEN(Reci) >=10 AND LEN(Reci) <=12 ";
using (SqlConnection connection = new SqlConnection(cs))
{
SqlCommand mycommand = new SqlCommand(queryString, connection);
try
{
connection.Open();
SqlDataReader reader = mycommand.ExecuteReader();
label14.Text = Convert.ToString(mycommand);
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
|
|
|
|
|
Pavlex4 wrote: When I run program with this commands it prints System.Data.SqlClient.SqlCommand!!! That is following its instructions; "Convert.ToString(mycommand)" will result in that text.
Pavlex4 wrote: Why it won't show random word from database??? What do you want to load? A single random word? In that case, your query is wrong, as it will result in multiple non-random results, and you should call the ExecuteScalar method on the command. ToString its result and remove the reader
If you want to load all the values in the list of records that the query returns, you'd need a reader indeed. In that case you'd still need the reader and call its Read method. To print them all, you'd need a loop.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Like this?But every time I run program it shows same word,it should show random word every other time!!!
using (SqlConnection connection = new SqlConnection(cs))
{
SqlCommand mycommand = new SqlCommand(queryString, connection);
try
{
connection.Open();
string word = (string)mycommand.ExecuteScalar();
label14.Text = word;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
modified 7-Dec-16 7:01am.
|
|
|
|
|
Yup, but that will only work if the select-statement returns a single value. Easiest would be to change the query to return a random word.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
But return random word must have lenght between 10 and 12!
|
|
|
|
|
..which is just another condition for the query. You've already got the length part, now you'd need the random part and to ensure that there's only one value returned.
Google for "MSAccess random query example", and you'll get an example like this[^].
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Like this?
string cs = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename= C:\Users\Pavle\Documents\Visual Studio 2015\Projects\Test slagalica\Test slagalica\Slagalica-DB.mdf;Integrated Security=True";
string queryString = "SELECT * FROM table1 WHERE LEN(Reci) >=10 AND LEN(Reci) <=12 ORDER BY RAND()";
string query = "SELECT * FROM table1 ORDER BY RAND()";
using (SqlConnection connection = new SqlConnection(cs))
{
SqlCommand mycommand = new SqlCommand(queryString, connection);
SqlCommand mycommand2 = new SqlCommand(query, connection);
try
{
connection.Open();
string word = (string)mycommand.ExecuteScalar();
word = (string)mycommand2.ExecuteScalar();
label14.Text = word;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
|
|
|
|
|
No, that's two commands; the query needs to be a single statement, in a single command, returning one value. If "ORDER BY RAND()" indeed returns the statements in a random order (verify in Access using the query designer) then you could add that part to the original statement, after the where-clause.
--edit
Something among the lines of below statement;
SELECT TOP 1 [WordColumnName]
FROM table1
WHERE LEN(Reci) >=10
AND LEN(Reci) <=12
ORDER BY RAND()
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
modified 7-Dec-16 14:37pm.
|
|
|
|
|
I add ORDER BY RAND() but I won't show random word other time!!!
string cs = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename= C:\Users\Pavle\Documents\Visual Studio 2015\Projects\Test slagalica\Test slagalica\Slagalica-DB.mdf;Integrated Security=True";
string queryString = "SELECT * FROM table1 WHERE LEN(Reci) >=10 AND LEN(Reci) <=12 ORDER BY RAND()";
using (SqlConnection connection = new SqlConnection(cs))
{
SqlCommand mycommand = new SqlCommand(queryString, connection);
try
{
connection.Open();
string word = (string)mycommand.ExecuteScalar();
label14.Text = word;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
|
|
|
|
|
Pavlex4 wrote: I add ORDER BY RAND() but I won't show random word other time!!! I am not even sure whether that is the correct syntax, but assuming it is, there are some other points as well;
You're SELECTing *, which means "all columns from that table". You stated that you want "one random word from the database", which is what the method ExecuteScalar returns. One value, not all rows.
If you are sure that the statement is correct and that it orders randomly, than selecting the TOP 1 record would also limit the amount of records returned.
If you have that working, than also use a using construct on the command object
Once that is fixed, only the statement remains as a possible point of failure. So, if you have this working tomorrow, you'd nearly be there. Compliments for persistence and perseverance
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
What should I do to make it work???
|
|
|
|
|
I have fixed problem when I replaced ORDER BY RAND() with ORDER BY NEWID()
How to shuffle random word that I get and split it's letters on labels???
string cs = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename= C:\Users\Pavle\Documents\Visual Studio 2015\Projects\Test slagalica\Test slagalica\Slagalica-DB.mdf;Integrated Security=True";
string queryString = "SELECT * FROM table1 WHERE LEN(Reci) >=10 AND LEN(Reci) <=12 ORDER BY NEWID()";
using (SqlConnection connection = new SqlConnection(cs))
{
SqlCommand mycommand = new SqlCommand(queryString, connection);
try
{
connection.Open();
string word = (string)mycommand.ExecuteScalar();
label14.Text = word;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
|
|
|
|
|
I shuffled word like this: string shuffled_word = new string(word.OrderBy(r => random.Next()).ToArray());
But I don't know how to every time I click button show letter of word on other label?
|
|
|
|
|
Pavlex4 wrote: I shuffled word like this: string shuffled_word = new string(word.OrderBy(r => random.Next()).ToArray()); That is LINQ, you wouldn't need to execute a command-object for that.
Pavlex4 wrote: But I don't know how to every time I click button show letter of word on other label? Execute the same method again; random would mean that it picks a random word, meaning there would be a different one on each execution.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I made every time I click button to show word letter on each label.But this only works with word that has lenght 12,for words that have lenght 10 and 11 program crashes.What should I do?
If word lenght is 10 it should generate 2 random letters and place it somewhere in word,if word lenght is 11 it should generate 1 random letter and place it somewhere in word!!!
Here is my code: [C#] slagalica-kviz-2 - Pastebin.com[^]
|
|
|
|